Android FaceDetector实现人脸检测功能
关于人脸检测被折磨了半个月,前2周开需求会时需要要做一个“人脸认证上传功能,具体是打开前置摄像头,识别出用户的脸并且脸在一个指定的圆圈内然后自动保存这个状态的图像待用户是否确定上传”。听到这个需求我第一时间想到比较专业的图形处理库OpenCV。去github上面搜了一下关于openCV识别人脸的demo,样例确实有点多,也确实是可以实现 但是OpenCV库实在是有点大8M,用这个库估计会被构架师说死。然后我还搜过其它的第三方库(虹软,face++,阿里云人脸检测)这几款都不是省油的灯一款需要兼容android5.0以上,其它2款都是收费版,至于阿里云更厉害了不支持离线检测。

后来才选择了google自带api,网上一搜发现google 的一个类android.hardware.Camera里面有已经帮你封装好的人脸检测的api有这方面了解的同学可以参考一下点击打开链接。我开始也是使用这种方式实现的,磕磕碰碰的写完后最终发现合乎需求,后来自己打算测试一下机子兼容性,拿了一台华为机子一测试,发现人脸的那个接口没有任何回调(nexus6P调用还会发现闪退,打log发现是ndk层抛出来的),心马上沉入谷底。
最后发现好像没有啥捷径可走了,只好老实实使用android.media.FaceDetector进行开发。这种方式的使用的思路是,使用Camera+TextureView(鉴于对开发时间紧,对已过时有点了解就没有使用Camera2)进行预览,通过设置PreviewCallback实时抓取每一帧图像进行检测是否合格。图像预览本人推荐google关于Camera使用demo进行修改,因为在实际中有很多机型未必都能合乎预想(本人也确实被坑过,自己封装的Camera发现跑在一些机子上图像方向是反向的。当然如果对Camera很熟悉那也是可以自己写的)。好了啰嗦了一大堆下面来看看正题
先看看集成到app里面的实际效果
这里说明不是APP卡,我用的录屏软件共享桌面时一卡一卡的
首先图像预览改自google demo,demo拿过来是不能直接使用的,里面需要自己手动添加每一帧的回调,代码如下(这里直接贴图了,更直观,稍后我会把demo发出来)
google CameraDemo主要改了这么多,下面来看看在获取到每一帧时对图像的处理跟识别
再看看FaceThread做的Bitmap转换,Bitmap旋转及对Bitmap是否有人脸的识别
好了,主要逻辑就这些吧,关于FaceDetector具体使用,这是我写好的demo(上面演示是把demo验证没问题情况拷贝到项目中,最终实现需要按照你的需求来。演示地址)
最后给一个忠告,在开发中遇到完全不熟悉的api最好去找google的实现的demo看效果,看代码的实现。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
代码知识SEO上一篇 : webpack4的迁移的使用方法
下一篇 : Django1.9 加载通过ImageField上传的图片方法
-
SEO外包最佳选择国内专业的白帽SEO机构,熟知搜索算法,各行业企业站优化策略!
SEO公司
-
可定制SEO优化套餐基于整站优化与品牌搜索展现,定制个性化营销推广方案!
SEO套餐
-
SEO入门教程多年积累SEO实战案例,从新手到专家,从入门到精通,海量的SEO学习资料!
SEO教程
-
SEO项目资源高质量SEO项目资源,稀缺性外链,优质文案代写,老域名提权,云主机相关配置折扣!
SEO资源
-
SEO快速建站快速搭建符合搜索引擎友好的企业网站,协助备案,域名选择,服务器配置等相关服务!
SEO建站
-
快速搜索引擎优化建议没有任何SEO机构,可以承诺搜索引擎排名的具体位置,如果有,那么请您多注意!专业的SEO机构,一般情况下只能确保目标关键词进入到首页或者前几页,如果您有相关问题,欢迎咨询!