1.opencv SDK
引用opencv的Java API实现人脸的识别,Java API通过AIDL调用Opencv Manager来使用opencv,使用封装的opencv_java.so库,避免另外再下载Opencv Manager。
opencv官方网站:https://opencv.org/
我们需要先下载opencv的SDK,解压SDK得到下面的文件
目录说明:
apk:官方提供的Manager的apk文件
samples:提供的示例和编译好的apk
sdk:库文件
2.环境搭建
官方提供的示例都是Eclipse Demo工程,我们将在Android Studio下搭建环境。
1.创建一个新的工程opencvdemo
2.SDK下的java工程copy到工程中
2.在settings.gradle中配置一下,主module引用opencvjava module。这个时候可能会出现一些错误,需要修改compileSdkVersion或者buildToolsVersion等等。
3.SDK/native/libs下的libopencv_java3.so库copy到工程中
4.把SDK\etc\lbpcascades文件下的lbpcascade_frontalface.xml文件copy到raw下
3.人脸识别
官方提供的人脸识别示例工程
按照官方提供的示例即可实现人脸的识别
4.人脸相似度
人脸相似度的对比,是两个Mat的对比。
Mat是OpenCV中用于存储图像信息的类,作为图像信息的载体。
深入了解:https://blog.csdn.net/hfut_why/article/details/84678805
opencvjava中Imgproc提供了compareHist方法,比较两个Mat的相似度。
比较两个Mat的相似度,两个Mat的cols和rows一定要相同,否则程序将出现一个Surprise。
Mat不一样就要修改其中一个Mat的大小。
Imgproc提供了resize方法修改Mat的大小。
参数说明 src:原Mat,dst:输入Mat,Size 输出Mat的大小。