Android FaceDetector实现人脸检测功能

所属分类: 软件编程 / Android 阅读数: 54
收藏 0 赞 0 分享

关于人脸检测被折磨了半个月,前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看效果,看代码的实现。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

更多精彩内容其他人还在看

Android框架学习之Volley和Glide详解

这篇文章主要给大家介绍了关于Android框架学习之Volley和Glide的相关资料,文中通过示例代码介绍的非常详细,对各位Android开发者们具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Android中Fragment的基本用法示例总结

Fragment是activity的界面中的一部分或一种行为,下面这篇文章主要给大家介绍了关于Android中Fragment的基本用法的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
收藏 0 赞 0 分享

Android.mk引入第三方jar包和so库文件的方法

这篇文章主要介绍了Android.mk引入第三方jar包和so库文件的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android仿微信录制小视频

这篇文章主要为大家详细介绍了Android仿微信录制小视频,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

android实现一键锁屏和一键卸载的方法实例

这篇文章主要给大家介绍了关于android如何实现一键锁屏和一键卸载的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
收藏 0 赞 0 分享

Android手势密码--设置和校验功能的实现代码

这篇文章主要介绍了Android手势密码--设置和校验功能的实现代码,非常不错,具有一定的参考校验价值,需要的朋友可以参考下
收藏 0 赞 0 分享

Kotlin学习笔记之const val与val

这篇文章主要给大家介绍了关于Kotlin学习笔记之const val与val的相关资料,并给大家介绍了const val和val区别以及Kotlin中var和val的区别,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
收藏 0 赞 0 分享

Android实现调用系统分享功能示例的总结

这篇文章主要介绍了通过Android调用系统分享文本信息、单张图片、多个文件和指定分享到微信、QQ,同时分享图片和文字的功能示例,小编觉得挺不错,一起跟随小编过来看看吧
收藏 0 赞 0 分享

Android自定义view实现输入控件

这篇文章主要为大家详细介绍了Android自定义view实现输入控件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
收藏 0 赞 0 分享

Android使用Intent.ACTION_SEND分享图片和文字内容的示例代码

这篇文章主要介绍了Android使用Intent.ACTION_SEND分享图片和文字内容的示例代码的实例代码,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧
收藏 0 赞 0 分享
查看更多