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

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);

} 

 
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82

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


原文:http://blog.csdn.net/u012222078/article/details/58602951

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值