编译SeetaFace人脸5个关键点库
1. 背景
疫情期间,歇业在家,偶遇github工程,便将其调整单独的Android的library库,调整JNI层接口以及内部方法实现。
工程结构图
硬件:Huaiwe Mate 20 Pro 前置摄像头
软件:Camera2+SeetaFaceAlignment+OpenCV
2. 调整Cmake编译环境以及构建脚本
借鉴于OpenCV FaceDetection,调整Cmake编译脚本,引入OpenCV依赖,并引入FaceAlignment依赖,生成libseeta_fa_lib.so文件
3. 调整Native接口
进行重新编写后,提供2个Native方式,
方法1初始化FaceAlignment,并返回索引
方法2,传入 FaceAlignment索引 face(OpenCV FaceDetector 人脸区域) OpenCV Mat(灰度)
第二个参数的使用,此处便是JNI将java对象传递给Native,先通过类名反射寻找到类,以及生成类对应的字段。然后通过getIntField(Object,x)获取Value.此处值得学习
第三个参数借鉴于OpenCV SDK,中直接将Mat的索引地址传入,简洁快捷
4. 运行结果
人脸的区域识别依赖于OpenCV FaceDetector
人脸的关键点,眼睛,嘴角的识别不够准确,通过相机识别多帧,晃动较大
5. 参照
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!