Android上的机器学习之人脸检测

Android开发正在经历快速变革,每天都有新的东西冒出来。昨天Android Studio刚刚取代了Eclipse,今天Android O就发布了。还有RxJava,kotlin语言,机器学习…码农们追的不亦乐乎。今天谈的是机器学习在Android上的一个实例:人脸检测功能。

在Android上进行人脸检测,不是新鲜事物。各村都有各村的高招,有集成OpenCV方法的,有用Android自带的人脸API的,也有高手自己实现算法的...这还不包括一大票的云端人脸检测服务。今天介绍的是Google最新引入的移动视觉接口Mobile Vision API)。

谷歌为Android提供的这套移动视觉接口,主要有三大功能:条码二维码检测和识别,文本检测和识别,最后就是人脸检测

关于人脸检测,多说一句

很多业余选手,容易混淆人脸检测和人脸识别的概念。说的通俗一点,检测回答的是“脸在哪里”,而识别则是“哪个是张三”。目前谷歌的移动视觉接口里,提供的是检测功能,还没有识别功能。

书要简短,直接开始

第1步,在Android Studio上建立一个项目,名字就叫Mobile Vision API demo吧。

第2步,因为移动视觉接口不是Android原生功能,而是谷歌Play Service的一部分。所以要在项目的build.gradle文件里添加play service sdk的编译依赖。这里提一句,如果引用整个的谷歌play service,很容易让工程出现65k method上限问题。所以,这里只引用Play Service的移动视觉接口。

第3步,在项目的manifest.xml里,添加meta data标签,启用人脸检测功能。

第4步,写一个简单界面,在layout文件里添加一个ImageView,用于展示图片和检测结果。

第5步,在layout里再添加一个Button,用于选图或是拍照。这步很简单就略啦。

第6步,用Canvas和Paint结合,实现画脸框和标记点的功能。

第7步,主角FaceDetector API要上场啦。例子代码中把tracking功能禁掉了,因为我们的app只有一张Bitmap,如果数据源是摄像头里的连续视频,就需要打开tracking。

第8步,FaceDetector对象创建之后,不要着急使用。先得检查一下能不能用。那位说了,这编译都通过了,怎么还有不能用的情况?

答案也很简单,还记得前面提到的移动视觉功能依赖谷歌Play Service吗?手机在首次使用人脸检测功能时,会下载对应的库文件。网络下载这事有快有慢。所以为了确保检测功能正常可用,使用前请先检查一下。

第9步,选一张有脸的Bitmap,传给detector,就可以得到一组人脸信息。

第10步,根据第9步的人脸信息,使用第6步的绘制功能,把脸框和标记画出来

第11步,展示到界面上,释放检测资源


好啦,到这里就完成了一个简单的人脸检测demo。

展示一下成果吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值