• Stars
    star
    203
  • Rank 192,890 (Top 4 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created about 7 years ago
  • Updated over 6 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

简易人脸检测库,不依赖三方库,可快速接入人脸检测功能。

ViseFace

简易人脸检测库,不依赖三方库,可快速接入人脸检测功能。

License API

版本说明

LatestVersion

代码托管

JCenter

为什么打造该库

1、想简单快速接入人脸检测功能;

2、Google 提供的人脸检测功能部分手机无法适配;

3、第三方提供的人脸检测功能接入门槛过高;

4、依赖第三方库会增加 APK 大小。

功能介绍

1、可快速识别人脸;

2、可适配所有机型;

3、可配置最大检测人脸数;

4、可配置是否显示人脸检测框;

5、可配置当前检测人脸摄像头为前置和后置;

6、可检测到最近人脸范围的光照值,光照范围 0 - 255;

7、可检测到的最近人脸相对于屏幕宽度的比例。

效果演示

效果演示

使用介绍

1、导入人脸检测库 在工程的 build 文件中添加如下依赖: compile 'com.vise.xiaoyaoyou:viseface:1.1.0'

2、创建相机预览布局

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
	>
	<!--相机预览界面,必须设置-->
	<com.vise.face.CameraPreview
	    android:id="@+id/face_detector_preview"
	    android:layout_width="match_parent"
	    android:layout_height="match_parent"/>
	<!--绘制人脸识别框,可依需配置-->
	<com.vise.face.FaceRectView
	    android:id="@+id/face_detector_face"
	    android:layout_width="match_parent"
	    android:layout_height="match_parent"/>
	<!--拍照按钮,点击后进行拍照,按照需要进行添加-->
	<Button
		android:id="@+id/face_detector_take_photo"
		android:layout_width="100dp"
		android:layout_height="100dp"
		android:layout_marginBottom="30dp"
		android:layout_gravity="bottom|center_horizontal"
		android:background="@android:drawable/ic_menu_camera"
		/>
</FrameLayout>

注意:最外层布局必须是 FrameLayout;如果代码中配置需要绘制人脸检测框,那么布局必须添加 FaceRectView

3、创建人脸检测实现对象

IFaceDetector mFaceDetector = new NormalFaceDetector();

4、创建权限检查监听

ICameraCheckListener mCameraCheckListener = new ICameraCheckListener() {
    @Override
    public void checkPermission(boolean isAllow) {
    	//权限是否允许
        ViseLog.i("checkPermission" + isAllow);
    }

    @Override
    public void checkPixels(long pixels, boolean isSupport) {
    	//手机像素是否满足要求
        ViseLog.i("checkPixels" + pixels);
    }
};

5、创建检测数据监听

IDataListener mDataListener = new IDataListener() {
    @Override
    public void onDetectorData(DetectorData detectorData) {
    	//回调识别到的数据
        ViseLog.i("识别数据:" + detectorData);
    }
};

6、设置相关配置,创建人脸检测代理 该库的核心思想就是快速接入人脸检测功能,所以该库的功能都是通过 DetectorProxy 代理类来实现,使用简单明了。具体使用场景如下:

//创建代理类,必须传入相机预览界面
DetectorProxy mDetectorProxy = new DetectorProxy.Builder(mFace_detector_preview)
				//设置权限检查监听
                .setCheckListener(mCameraCheckListener)
                //设置人脸检测实现
                .setFaceDetector(mFaceDetector)
                //设置检测数据回调监听
                .setDataListener(mDataListener)
                //设置绘制人脸识别框界面
                .setFaceRectView(mFace_detector_face)
                //设置是否绘制人脸检测框
                .setDrawFaceRect(true)
                //设置预览相机的相机ID
                .setCameraId(Camera.CameraInfo.CAMERA_FACING_BACK)
                //设置可检测的最大人脸数
                .setMaxFacesCount(5)
                //设置人脸识别框是否为完整矩形
                .setFaceIsRect(false)
                //设置人脸识别框的RGB颜色
                .setFaceRectColor(Color.rgb(255, 203, 15))
                //创建代理类
                .build();

7、开启人脸检测

if (mDetectorProxy != null) {
    mDetectorProxy.detector();
}

8、释放资源

if (mDetectorProxy != null) {
    mDetectorProxy.release();
}

关于我

Website

GitHub

CSDN

最后

如果觉得该项目有帮助,请点下Star,您的支持是我开源的动力。如果有好的想法和建议,也欢迎Fork项目参与进来。使用中如果有任何问题和建议都可以进群交流,QQ群二维码如下:

QQ群 (此群已满)

QQ群