基于OpencvForAndroid3.49的人脸检测教程

概述

做了一个人脸检测的App,整理出来分享一下。这篇人脸检测是基于OpenCV来实现的。OpenCV是一个强大的跨平台计算机视觉库,至于多强大,自行百度。我们这边主要介绍的是OpenCV4Android。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200211122511747.gif

环境配置

1.下载opencv-3.4.9-android-sdk
首先是OpenCV的官网,找到下图中的Android下载即可,这边我们用的是3.4.9,点击下载即可。
ALT

2.导入工程

新建一个安卓工程后在原有工程中导入opencv-3.4.9-android-sdk\OpenCV-android-sdk\sdk\下的java模块,如下
导入java模块
点击Next,Finsh完成模块导入。

3.修改gradle,导入依赖

修改opencv模块的gradle,跟项目的配置保持一致。
在这里插入图片描述
在项目中导入opencv依赖,如下:
在这里插入图片描述
在这里插入图片描述
点击OK,等待编译即可。

到这边为止,OpenCV的基本环境就导入完毕了,下面就可以正常使用opencv了。

人脸检测模块的移植

这边我们只涉及人脸检测模块的移植,不涉及原理。在刚才下载的opencv-3.4.9-android-sdk\OpenCV-android-sdk\samples目录下有很多官方demo,其中有一个face-detection,这就是官方给的人脸识别demo,我们要做的就是把他的核心功能移植到自己的App中。
###1.复制face-detection中的模块
复制face-detection中的jni到自己工程的目录下如图
在这里插入图片描述

2.修改android.mk文件

在这里插入图片描述
其中F:\asprojects\AI\OpenCV\opencv-3.4.9-android-sdk\OpenCV-android-sdk\sdk\native\jni\OpenCV.mk为我本地opencv-3.4.9-android-sdk下的OpenCV.mk路径,这边需要替换成大家自己的本地路径。

3.修改Application.mk文件
在这里插入图片描述
APP_ABI根据自己需求添加,也可以参照我这边的四个架构;Platform我这选择的是21.

3.修改DetectionBasedTracker_jni.cpp和DetectionBasedTracker_jni.h文件

在这里插入图片描述
选择文件中的org_oepncv_samples_facedetect,ctrl+r替换成自己的包名,两个文件所有的org_oepncv_samples_facedetect都替换(一定要全部替换)。

4.编译文件生成so库

完成以上操作后,在terminal中进入jni目录下,手敲ndk-build即可完成编译(项目的ndk)
在这里插入图片描述
完成编译后就会出现libs文件夹,里面就有我们需要的库了。

5.移植samples中代码

从facedetect中将java文件和布局文件拷到自己的工程中来即可,lbpcascade_frontalface.xml是人脸特征库,直接用就好了,想了解的百度一下Haar、LBP特征。
在这里插入图片描述
运行起来就可以实现实时的人脸识别了。

效果展示

这边只局限于正脸(因为只用了正脸的特征,侧脸的自行更改特征文件),效果还行吧,没有对图片做任何处理,明暗程度对人脸检测的影响还是很大的。
在这里插入图片描述
在这里插入图片描述

代码简析

简单讲一下代码,首先是opencvlibrary的初始化,如果没有做上面的so包编译,就需要额外安装一个opencv manager的app(具体没试过);因为我们这边已经自己编译过,所以不需要安装opencv manager,直接走else初始化就好了。
在这里插入图片描述
下面将raw下的xml文件读取出来,创建一个分类器,这个分类器后面会对每图片中的人脸进行识别。
在这里插入图片描述
然后在onCameraFrame方法中,首先从inputFrame中拿到该帧的rgba图像和灰度图像,灰度图像用来检测输出人脸,最后将人脸在彩色图像中画出来。
主要了解一下mJavaDetector.detectMultiScale这个方法个参数的含义,
1.image表示的是要检测的输入图像
2.objects表示检测到的人脸目标序列
3.scaleFactor表示每次图像尺寸减小的比例
4. minNeighbors表示每一个目标至少要被检测到3次才算是真的目标(因为周围的像素和不同的窗口大小都可以检测到人脸),
5.minSize为目标的最小尺寸
6.minSize为目标的最大尺寸
在这里插入图片描述

总结

用的都是官方现成的东西做的,可以简单的做一些图片视频中的人脸检测,后面会跟一篇关于怎么训练特定的人脸特征,从而实现识别检测出的人脸。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值