当前位置: 首页 > news >正文

房地产公司网站下载/山西seo推广

房地产公司网站下载,山西seo推广,东莞大朗镇疫情最新消息,上海公安门户网站网址是多少原文:【Win10 应用开发】人脸识别 可能你会认为人脸识别用起来会很复杂,老周当初也这么想,但通过实际操作后,我发现非然。 经过微软封装的东西,向来都是复杂问题简单化,只要用得舒心,代码越少越好&#xff…

原文:【Win10 应用开发】人脸识别

可能你会认为人脸识别用起来会很复杂,老周当初也这么想,但通过实际操作后,我发现非然。

经过微软封装的东西,向来都是复杂问题简单化,只要用得舒心,代码越少越好,用最少的代码做最多的事情,此为大师境界也。

好,屁话不说,先介绍一下如何完成人脸识别(或者叫人脸检测,随你怎么翻译,反正知道是怎么一回事就行)。核心的类是FaceDetector,不要问我这个类在哪里,自己打开对象浏览器搜索。

第一步,访问静态属性IsSupported,看看当前平台是不是支持人脸识别,如果返回false,那就没戏了。

第二步,调用静态方法CreateAsync得到一个FaceDetector实例,所以该类不需要手动实例化,初始化过程由运行库来完成,然后把初始化好的实例返回给咱们,然后就可以用它来干活了。

第三步,调用实例方法DetectFacesAsync进行识别,识别完后会返回一个DetectedFace列表,每个DetectedFace表示一张脸,因为你用来识别的照片中可能包含N张脸。FaceBox属性包含了人脸的矩形区域,就是人脸位于整张照片的哪个位置,可通过X,Y坐标描述矩形的左上角位置,并用宽度和高度来表明那张脸的大小。

DetectFacesAsync方法需要一个SoftwareBitmap类型的参数,该参数就是你要用来识别人脸的图像。

可能大家已经知道,通过BitmapDecoder类的GetSoftwareBitmapAsync方法可以返回一个SoftwareBitmap实例,不过要注意的是,FaceDetector在进行检测时并不是所有像素格式都支持,可以调用GetSupportedBitmapPixelFormats方法来获取所有受支持的像素格式列表,经老周测试,该方法返回Nv12和Gray8,也就是当前只支持这两种格式。当然,你也可以通过IsBitmapPixelFormatSupported方法来验证一下某个像素格式是否被支持。

 

好了,基本用法已经说完了,确实不是很复杂。下面,老周给大家演示一个例子,该例子允许你选择一张照片,然后识别出照片上的人脸,并用一个矩形来标记。

先看看UI的设计,主要的XAML如下:

        <Grid><Grid.RowDefinitions><RowDefinition Height="auto"/><RowDefinition Height="*"/><RowDefinition Height="auto"/></Grid.RowDefinitions><Button Content="选择要识别的照片" Click="OnClick"/><Viewbox  Grid.Row="1" Margin="5" Stretch="Uniform" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"><Canvas Name="cv" Width="{x:Bind img.Width,Mode=OneWay}" Height="{x:Bind img.Height,Mode=OneWay}" ><Image Name="img" Stretch="None"/></Canvas></Viewbox><TextBlock Name="tbMessage" Foreground="Red" FontSize="16" Grid.Row="2"/></Grid>

为啥我要用一个ViewBox呢,因为这个控件有一个好处,就是会自动将它里面的可视化对象进行缩放,待会儿我要在Image上显示图片,而且还要用到Rectangle元素来标记人脸的位置,为了让绝对坐标计算起来能与原图相等,就把这些内容都放在ViewBox中,让Viewbox来进行缩放,这样一来,就能够根据窗口的大小自动调整显示区域了。

之所以用Canvas,是因它是绝对坐标定位的,这方便我稍后放置Rectangle元素。

 

处理按钮事件,通过OpenFilePicker来打开图像文件。

            FileOpenPicker picker = new FileOpenPicker();picker.FileTypeFilter.Add(".jpg");picker.FileTypeFilter.Add(".jpeg");picker.FileTypeFilter.Add(".png");StorageFile file = await picker.PickSingleFileAsync();

记得以前跟大家讲过,picker调用后要挂起当前应用,并通过响应应用激活来处理获取的文件,这是在WP 8.1的文章中说过,但是,现在不用了,很简单,因为Windows Phone App和Windows App已经完全统一了,所以不必再考虑平台隔离的代码了。

下面代码完成两件事:1、在Image控件上显示图像;2、进行识别,并用矩形标记人脸位置。

            if (file != null){using (IRandomAccessStream streamIn= await file.OpenReadAsync()){// 对图像文件进行解码BitmapDecoder decoder = await BitmapDecoder.CreateAsync(streamIn);// 获取图像内容SoftwareBitmap sbmp = await decoder.GetSoftwareBitmapAsync(BitmapPixelFormat.Bgra8, BitmapAlphaMode.Straight);WriteableBitmap bmp = new WriteableBitmap(sbmp.PixelWidth, sbmp.PixelHeight);sbmp.CopyToBuffer(bmp.PixelBuffer);this.img.Source = bmp;img.Width = bmp.PixelWidth;img.Height = bmp.PixelHeight;// 通过循环,尝试以各种受支持的格式来进行识别// 如果识别顺利,就跳出循环// 否则进入下一轮循环int n = 0;while (n < formats.Count){if (FaceDetector.IsBitmapPixelFormatSupported(formats[n])){FaceDetector detector = await FaceDetector.CreateAsync();try{// 转换图像像素格式SoftwareBitmap sbmp2 = SoftwareBitmap.Convert(sbmp, formats[n]);// 进行检测IList<DetectedFace> results = await detector.DetectFacesAsync(sbmp2);// 清理Canvas中的矩形while (cv.Children.Count > 1)cv.Children.RemoveAt(cv.Children.Count - 1);// 在界面上添加矩形for (int i = 0; i < results.Count; i++){DetectedFace dface = results[i];Rectangle rect = new Rectangle();rect.Stroke = new SolidColorBrush(Colors.Yellow);rect.StrokeThickness = 5d;// 定位矩形
                                    Canvas.SetLeft(rect, dface.FaceBox.X);Canvas.SetTop(rect, dface.FaceBox.Y);rect.Width = dface.FaceBox.Width;rect.Height = dface.FaceBox.Height;cv.Children.Add(rect);}tbMessage.Text = "人脸识别完成。";break;}catch{tbMessage.Text = "人脸识别失败。";n++;}//cv.InvalidateArrange();
                        }}}


因为我要在Image上显示图像,所以从decoder中得到的SoftwareBitmap不能直接用于识别,原因是我刚才说了,目前SDK的人脸识别只支持少量的像素格式,Bgra8是不受支持的,所以可以用SoftwareBitmap的Convert方法转换格式,并返回转换后的SoftwareBitmap对象。

这里我用一个while循环来完成识别:

                    int n = 0;while (n < formats.Count){if (FaceDetector.IsBitmapPixelFormatSupported(formats[n])){FaceDetector detector = await FaceDetector.CreateAsync();try{……break;}catch{……n++;}}

意思是,我用FaceDetector所支持的所有像素格式都去尝试进行识别,只要其中有一种格式能够顺利完成识别,就终止循环(break);如果第一种格式不能识别,就把n++来使用第二种格式来识别。

=============================================

示例的大致情况就是这样,做完后我们当然要来试试效果了。

首先,来检测一下八戒的猪脸。

很显然,猪脸也能检测出来,不错。

接着,我又请神仙妹妹来试镜。发现效果甚好。

    

然后,我又找来一位MM再试,效果也甚佳。

 

怎么样,这姿势不错吧。

示例源码下载:http://files.cnblogs.com/files/tcjiaan/FaceDetApp.zip

 

http://www.lbrq.cn/news/11341.html

相关文章:

  • 企业网站自己可以做吗/长尾关键词挖掘词工具
  • 网站如何做日历/全球搜索引擎排行榜
  • 凡客资源/志鸿优化设计答案网
  • 临清做网站/整合营销策划方案
  • 网站日均ip过万怎么做/网络营销是做什么
  • 国外购物独立网站建设/青岛网站制作设计
  • 佛山专业网站建设哪家好/互动营销的案例及分析
  • 爱站网ip反查域名/seo点击排名工具
  • 设计师常备设计网站大全/百度文库首页官网
  • 永康做企业网站的公司/成都网站搭建优化推广
  • 网站平台建设保密协议/谷歌google官方下载
  • 做磁力搜索网站违法吗/知名seo公司
  • 网站维护公司推荐/海外广告投放渠道
  • 做网站要多少人/今日新闻头条最新消息
  • 动物摄影网站/百度网址导航主页
  • vs2015可以做网站么/昆山网站建设推广
  • 牡丹江信息网完整版/如何做seo搜索优化
  • 金融投资网站方案/企业网站推广的方法
  • 网站建设实训报告范文/社交网络的推广方法有哪些
  • 电子商务网站建设百度文库/app拉新推广平台渠道
  • 重庆网站推广什么/舆情监测分析系统
  • 智能网站开发工具/网络软文营销是什么意思
  • 购物网站建设流程/东莞seo整站优化
  • 个人网站怎么做有创意/免费建立个人网站官网
  • 在云服务器打建网站/环球网今日疫情消息
  • 学用php做网站/色盲测试卡
  • 免费模板网站/能翻到国外的浏览器
  • 甘肃省城乡住房建设厅网站/网站监测
  • 松原公司做网站/seo咨询邵阳
  • 日本做爰网站/网站策划运营
  • IDEA高效开发:Database Navigator插件安装与核心使用指南
  • 【推荐100个unity插件】使用C#或者unity实现爬虫爬取静态网页数据——Html Agility Pack (HAP)库和XPath 语法的使用
  • DolphinScheduler 如何高效调度 AnalyticDB on Spark 作业?
  • 生产问题排查-数据库连接池耗尽
  • 死锁问题以及读写锁和自旋锁介绍【Linux操作系统】
  • 渭河SQL题库-- 来自渭河数据分析