美文网首页Android开发Android开发经验谈Android开发
[26]——Android 人脸识别了解一下 (中)

[26]——Android 人脸识别了解一下 (中)

作者: junerver | 来源:发表于2018-05-28 14:55 被阅读52次

    转载请注明作者及出处:https://www.jianshu.com/p/b41f64389c21

    [25]——Android 人脸识别了解一下 (上)
    在上文中我大致的介绍了官方 Demo 中人脸注册的流程,本文我们接着来看看,在完成了人脸注册之后我们该如何识别出用户的人脸特征,从而通过人脸识别获取用户信息。

    人脸识别的全部流程集成在官方 Demo 的 DetecterActivity 文件中。

    还是来了解几个概念

    1. 人脸追踪 FT
    2. 年龄检测 Age
    3. 性别检测 Gender

    其中人脸追踪 FT 与人脸检测 FD 功能基本一致(甚至代码基本都是相同的),Age 引擎用于识别年龄,Gender 引擎用于识别性别。

    识别流程

    整体上比人脸注册还要简单,官方提供了很好的封装供我们使用,我们来看看流程。

    第一步:

    创建两个叠加在一起的 SurfaceView,一个用于显示摄像头的预览信息,一个用于框出摄像头预览中人脸的位置;

    //覆盖在相机预览之上的一层surfaceview
    mGLSurfaceView = (CameraGLSurfaceView) findViewById(R.id.glsurfaceView);
    mGLSurfaceView.setOnTouchListener(this);
    //摄像头的surfaceview
    mSurfaceView = (CameraSurfaceView) findViewById(R.id.surfaceView);
    mSurfaceView.setOnCameraListener(this);
    mSurfaceView.setupGLSurafceView(mGLSurfaceView, true, mCameraMirror, mCameraRotate);
    mSurfaceView.debug_print_fps(true, false);
    

    这里面出现了两个监听器,分别是View.OnTouchListenerCameraSurfaceView.OnCameraListener,第一个监听器用于设置触摸对焦,第二个监听器就是我们实现人脸识别的最基础一步:设置、获取摄像头的数据;

    该接口共有6个方法:

    public interface OnCameraListener {
        /**
         * setup camera. 设置相机参数
         * @return the camera
         */
        public Camera setupCamera();
        /**
         * reset on surfaceChanged.  在Surfacechanged之后重置
         * @param format image format.
         * @param width width
         * @param height height.
         */
        public void setupChanged(int format, int width, int height);
        /**
         * start preview immediately, after surfaceCreated 在surfaceCreated之后是否立即开始预览
         * @return true or false.
         */
        public boolean startPreviewImmediately();
        /**
         * on ui thread. 在预览时刚方法会被调用,该方法的返回值是后两个方法的传入值
         * @param data image data
         * @param width  width
         * @param height height
         * @param format format
         * @param timestamp time stamp
         * @return image params.
         */
        public Object onPreview(byte[] data, int width, int height, int format, long timestamp);
        public void onBeforeRender(CameraFrameData data);
        public void onAfterRender(CameraFrameData data);
    }
    

    初始化相机

    @Override
    public Camera setupCamera() {
        // TODO Auto-generated method stub
        //初始化相机

    相关文章

      网友评论

        本文标题:[26]——Android 人脸识别了解一下 (中)

        本文链接:https://www.haomeiwen.com/subject/aafgjftx.html