Android 面部识别之二(调用开源面部识别算法seetaface检测)

来源:互联网 发布:淘宝男士棉服 编辑:程序博客网 时间:2024/04/27 21:40

Android 面部识别之二(调用开源面部识别算法seetaface检测)

https://github.com/seetaface/SeetaFaceEngine(Seetaface官方地址)
如果有需要可以自己研究一下这个算法。

我这里是从网上得到的通过把开源的c++通过NDK封装成so文件,通过JNI调用。
https://www.zhihu.com/question/50631245

检测速度每个图片在1700毫秒左右(小米note作为测试机)
需要注意的几个点

  1. 这里只有armeabi-v7a 下的so所以只适用于部分的手机,如果有高手可以编译出其他的一定告诉小弟一声。
  2. 每次检测的时候需要使用几个bin文件,这是开源作者自己训练好的model。
  3. domo地址我放在下面了,应用很多和摄像头做面部识别等等。这就看需要怎么用了,细节我就不贴了,需要的看一下源码(代码试用android studio写的)。欢迎讨论。

简单的看看jni接口把。

/** * 采用中科院山世光开源的SeetaFaceEngine实现android上的人脸检测与对齐、识别 * */package seetaface;import android.graphics.Bitmap;public class SeetaFace {    static {        System.loadLibrary("SeetafaceSo");    }    //初始化so库,告诉底层人脸识别模型文件的目录    //该目录下应当包括这3个文件:seeta_fd_frontal_v1.0.bin,seeta_fa_v1.1.bin,seeta_fr_v1.0.bin    public native boolean init(String vModelDir);    /**     * 检测人脸     * @param vImgData:图像数据     * @param vColNum:图像宽度     * @param vRowNum:图像高度     * @param vCh:通道数     * @param vFaceBmp:人脸抠图(有多个人脸也只抠1一个图返回)     * @return     */    //public native CMSeetaFace[] GetFaces(byte[] vImgData, int vColNum, int vRowNum, int vCh, Bitmap vFaceBmp);    /**     * 检测人脸     * @param vBmp:待检测人脸的大图     * @param vFaceBmp:其中一个人脸抠图     * @return     */    public native CMSeetaFace[] DetectFaces(Bitmap vBmp, Bitmap vFaceBmp);    /**     * 测试     * @param vVal     * @return     */    public native int Test(int vVal);     /**     * 图像的gamma校正     * @param vColorBmp:原图     * @param vGammaBmp:处理后的图     * @param vGamma:gamma值     */    public native void imGamma(Bitmap vColorBmp, Bitmap vGammaBmp, float vGamma);    /**     * 彩色转灰度图     * @param vColorBmp     * @param vGrayBmp     */    public native void im2gray(Bitmap vColorBmp, Bitmap vGrayBmp);    /**     * 检测人脸,返回各人脸位置,每个人的以;分隔,坐标以分号分隔     * @param vImgData:图像的char*数据     * @param vColNum:图像列数     * @param vRowNum:图像行数     * @param vCh:图像通道数,3或4     * @param vDetectModelPath:正面人脸检测模型的绝对路径     * @param vFaceNo:人脸编号,用于保存特征数据生成文件名用     * @param vFaceBmp:人脸抠图     * @return     */     public native String DetectFace(byte[] vImgData, int vColNum, int vRowNum, int vCh, String vDetectModelPath, int vFaceNo, Bitmap vFaceBmp);    /**     * 比对2个人脸特征值的相似度      * @param vFeat1     * @param vFeat2     * @param vNum     * @return      */    public native float CalcSimilarity(float[] vFeat1, float[] vFeat2);} 

链接:http://pan.baidu.com/s/1hsn4bKK 密码:4n4y

1 1
原创粉丝点击