Android人脸识别之识别人脸特征

在这里插入图片描述

首先还是来了解几个概念

人脸追踪 FT
年龄检测 Age
性别检测 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.OnTouchListener 、CameraSurfaceView.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
    //初始化相机?
    mCamera = Camera.open(mCameraID);
    try {
        Camera.Parameters parameters = mCamera.getParameters();
        parameters.setPreviewSize(mWidth, mHeight);
        parameters.setPreviewFormat(mFormat);
        for( Camera.Size size : parameters.getSupportedPreviewSizes()) {
            Log.d(TAG, "SIZE:" + size.width + "x
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值