Android双目摄像头(带人脸检测)正确调用姿势

前言
本文讲述如何在Android上调用双目摄像头(不管是usb双目摄像头还是内置双目摄像头(一般是平板)),进行实时预览,预览操作是分别打开摄像头并使用两个SurfaceView同时预览,并使用自带的人脸检测api进行人脸检测。其实,双目摄像头调用跟常规相机调用方式差不多,双目无非就是Camera .open(0)和Camera.open(1),Camera.open(0)可能是RGB或IR,同理Camera.open(1)也可能是RGB或IR,出现这种情况一般是工控机和usb双目摄像头没有固定输出。此外双目摄像头是定焦,是不能聚焦的。

国际规则,先上图
在这里插入图片描述

双目摄像头理解

双目摄像头组成,目前大多是一个RGB 摄像头加一个近红外摄像头。RGB一个做人脸识别,IR做活体检测。
对于单目RGB摄像头,一般只能通过配合式活体检测(根据指示做相应动作)来进行活体检测,这在用户体验上差了很多,而且对于算法要求很高,其精确度也难以比上双目方案。所以具有近红外摄像头的双目模组,在活体检测方面的作用是远大于普通单目彩色摄像头。

简单来说,使用双摄像头做活体检测的,都是非配合式活体检测,不需要根据提示做一些诸如眨眼、点头之类的动作,对算法要求更高,但是速度更快, 对用户体验也更友好。

目前市面上第三方人脸识别做的比较的好的有百度虹软阅面商汤等厂家,一般支持双目活体检测。

双目摄像头调用流程

  1. 创建SurfaceView
  2. 在SurfaceView onCreate处,打开Camera
  3. 对Camera设置参数,预览大小、照片大小、预览格式,预览监听等等
  4. 开始预览
  5. 停止预览,释放相机资源,移除SurfaceView的回调

注意:

  • 每个摄像头走一遍流程,Camera要设置支持的参数,特别是预览大小和照片大小
  • 由于不同厂家的摄像头存在差异,通过下面代码获取相机旋转角度不一定对的,导致预览方向和人眼看到的方向不一定对,建议加个配置页面设置相机旋转角度。
  • 角度不对会影响人脸的跟踪框的计算,定位不准

   //mCamera.setDisplayOrientation(getRotateAngle());

 private int getRotateAngle() {
        Camera.CameraInfo info = new Camera.CameraInfo();
        Camera.getCameraInfo(mCameraId, info);
        // 获取当前手机的选装角度
        int rotation = ((WindowManager) getContext()
                .getSystemService(Context.WINDOW_SERVICE))
                .getDefaultDisplay()
                .getRotation();
        int degrees = 0;
        switch (rotation) {
            case Surface.ROTATION_0:
                degrees = 0;
                break;
            case Surface.ROTATION_90:
                degrees = 90;
                break;
            case Surface.ROTATION_180:
                degrees = 180;
                break;
            case Surface.ROTATION_270:
                degrees = 270;
                break;
        }

        int result;
        if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) {
            result = (info.orientation + degrees) % 360;
            result = (360 - result) % 360;
        } else {
            result = (info.orientation - degrees + 360) % 360;
        }
        return result;
    }


关于相机角度及上面代码的理解可参考下图(图片来源于网络):

项目地址:

https://github.com/kellysong/BinocularCamera

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值