Android OtherAndroid开发功能专区

一个简单的人脸识别库

2018-03-21  本文已影响900人  mymdeep

deepFace

前言

deepFace是直接封装了Android原生的图像识别,简化了使用接口,避免了一部分坑,可以获取人脸的中心点,和两眼之间的距离。

使用

gradle 依赖

compile 'com.deep:face_deep:1.1'

接口说明

拍照识别

拍照识别,要求使用照相机拍照,然后对拍照的内容进行处理。而使用照相机必须要使用一个相机的preview surfaceview 界面,这个已经封装好,可以用deepFace中的CameraSurfacePreview,也可以自己写。

使用相机必须要要求有个界面展示相机的拍摄内容,否者报错,如果想实现后台偷拍,可以将这个展示的View宽高设置为1像素

如果使用拍照检测,需要初始化相机以及CameraSurfacePreview,当然这部分代码用户可以根据需求自己写。

mCamera = Camera.open(1);
mCamera.setDisplayOrientation(90);
AndroidDetectUtils.getInstance().setCameraParam(mCamera);
mCameraSurPreview = new CameraSurfacePreview(this,mCamera);
preview.addView(mCameraSurPreview);

Camera 0对应的是后置摄像头,1是前置摄像头
setDisplayOrientation是设置相机角度。

识别

识别可以直接调用:

 AndroidDetectUtils.getInstance().check(bytes, new CheckCallback() {
                            @Override
                            public void onSuccess(int count, Face[] faces) {
                                Log.e("xxxxxx","success "+" count="+count);
                            }

                            @Override
                            public void onFail() {
                                Log.e("xxxxxx","fail ");

                            }
                        });

其中bytes是相机拍摄的字节流,也可以传入bitmap或者本地file。

CheckCallback回调,是对检测结果的处理。onSuccess是检测到了人脸,count是人脸个数,Face数组为每个人脸的数据。

该接口建议在异步线程中调用,如果图片很大,耗时较长。

权限问题

图像识别本身不需要任何权限设置,但是如果使用相机需要添加

  <uses-permission android:name="android.permission.CAMERA" />

如果使用本地图片需要:

 <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

特殊接口

设置人脸个数

可以设置最大检测人脸的个数,建议不要超过10,否则影响准确性:

Constants.MAX_FACES = 5

log开关

L.debug = true  //false为关闭

总结

详细使用情况可以参考demo。
之前总结下来的学习源码和视频会逐渐分享给大家,对于刚刚入门的朋友建议关注我的公众号,发送android获取android入门教学视频,发送java获取java进阶视频。


同时我还会定期整理之前攒下的源码(很多我自己也没看过),学习资料,分享给大家:



如果准备好了,来,扫码吧!加入我们吧!


上一篇下一篇

猜你喜欢

热点阅读