Home

Awesome

说明

运行Demo前请先安装 OpenCV Manager (必须!!) 并给Demo授予CAMERA权限


部署

Step 1. Add the JitPack repository to your build file

Add it in your root build.gradle at the end of repositories:

allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}

Step 2. Add the dependency

dependencies {
        compile 'com.github.kongqw:FaceDetectLibrary:1.2.1'
}

Step 3. Add it in your app build.gradle

android {
    ……
    packagingOptions {
        exclude 'META-INF/services/javax.annotation.processing.Processor'
        pickFirst 'org/bytedeco/javacpp/macosx-x86_64/libusb-1.0.dylib'
        pickFirst 'META-INF/maven/org.bytedeco.javacpp-presets/opencv/pom.properties'
        pickFirst 'META-INF/maven/org.bytedeco.javacpp-presets/opencv/pom.xml'
        pickFirst 'META-INF/maven/org.bytedeco.javacpp-presets/ffmpeg/pom.properties'
        pickFirst 'META-INF/maven/org.bytedeco.javacpp-presets/ffmpeg/pom.xml'
    }
}

Step 4. Set screen orientation in your AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest ……>

    <application
        ……>
        <activity
            ……
            android:screenOrientation="landscape">
            ……
        </activity>
    </application>

</manifest>

XML

<com.kongqw.view.CameraFaceDetectionView
        android:id="@+id/cameraFaceDetectionView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

Activity

添加人脸检测监听

CameraFaceDetectionView cameraFaceDetectionView = (CameraFaceDetectionView) findViewById(R.id.cameraFaceDetectionView);
cameraFaceDetectionView.setOnFaceDetectorListener(new CameraFaceDetectionView.OnFaceDetectorListener() {
    @Override
    public void onFace(Mat mat, Rect rect) {

    }
});

添加加载OpenCV的监听

mCameraFaceDetectionView.setOnOpenCVInitListener(new OnOpenCVInitListener() {
    @Override
    public void onLoadSuccess() {
        Log.i(TAG, "onLoadSuccess: ");
    }

    @Override
    public void onLoadFail() {
        Log.i(TAG, "onLoadFail: ");
    }

    @Override
    public void onMarketError() {
        Log.i(TAG, "onMarketError: ");
    }

    @Override
    public void onInstallCanceled() {
        Log.i(TAG, "onInstallCanceled: ");
    }

    @Override
    public void onIncompatibleManagerVersion() {
        Log.i(TAG, "onIncompatibleManagerVersion: ");
    }

    @Override
    public void onOtherError() {
        Log.i(TAG, "onOtherError: ");
    }
});

加载OpenCV

mCameraFaceDetectionView.loadOpenCV(getApplicationContext());

切换摄像头

mCameraFaceDetectionView.switchCamera();

保存人脸特征

boolean isSave = FaceUtil.saveImage(Context context, Mat mat, Rect rect, String fileName);

删除人脸特征

boolean isSave = FaceUtil.deleteImage(Context context, String fileName);

提取人脸特征

用于显示,对比直接调用 FaceUtil.compare 即可。

Bitmap bitmap = FaceUtil.getImage(Context context, String fileName);

人脸识别(特征对比)

特征文件不存在没有抛异常,返回-1.

double score = FaceUtil.compare(Context context, String fileName1, String fileName2);