百度人脸识别适配横屏的几个关键点总结

横屏无法识别的问题总结,

最主要的问题是要明白百度人脸识别接口的含义,然后根据他需要的数据格式,来传输对应的数据和配置相应的设置。
针对横屏, 主要有有三个问题点 :
(1)宽高是否倒置
(2)旋转角度是否正确
(3)是否是镜像(实测这个影响不大, 不管是不是镜像都能识别出人脸,但是不知道会不会影响识别率)

宽高指的是图片的宽高,
你的设备的 Camera 的 onPreviewFrame 回调中拿到的图像数据, 宽是多少, 高是多少, 然后给接口的时候, 就要反过来, 先传高,再传宽

摄像头输出的数据一般都不是人头正向的, (安卓平台上, 一般是在 Camera 的 onPreviewFrame 回调中拿数据 )
常见的都是偏向了90度 , 有两种方法可以确认偏向了多少度 :

  1. 通过安卓的平台接口, Camera.getCameraInfo(mCameraId, info); info.orientation 获得的就是摄像头的旋转角度
  2. 直接将 Camera 的 onPreviewFrame 回调中的数据(默认是NV21格式)转成jpeg保存到本地, 直接看图片。
    然后传给接口的时候, 就要计算一下.比如图片如果需要旋转顺时针旋转270度才能正向 , 就填 270 ; 如果不需要旋转, 就填0
             // 小米8手机,人脸直接检测配置 。 
			 //onPreviewFrame出来的图片是额头在右侧, 下巴在左侧,所以需要旋转 270度才能正向 , 所以第四个参数填 270 ; 
			 //然后图片是宽 1280 , 高 640 , 所以第二三个参数分别填  640 和  1280
//            BDFaceImageInstance imageInstance = new BDFaceImageInstance(data,
//                    640 , 1280,
//                    BDFaceSDKCommon.BDFaceImageType.BDFACE_IMAGE_TYPE_YUV_NV21,
//                    270.0f,
//                    1);
            // 二代机, 原始数据直接检测配置 。 
			//onPreviewFrame出来的图片是正向的, 额头在顶上, 下巴在底下,所以不需要旋转 , 所以第四个参数填 0 ; 
			//然后图片是  宽 1280 , 高 720  所以第二三个参数分别填  720 和  1280
//            BDFaceImageInstance imageInstance = new BDFaceImageInstance(data,
//                    720 , 1280,
//                    BDFaceSDKCommon.BDFaceImageType.BDFACE_IMAGE_TYPE_YUV_NV21,
//                    0.0f,
//                    0); // 1 can
BDFaceImageInstance(byte[] data, int height, int width,BDFaceSDKCommon.BDFaceImageType imageType, float angle, int isMbyteArrayror)

最后一个参数是 《是否是镜像》的意思(isMbyteArrayror 是否镜像), 没搞懂, 可能是便于底层做图片翻转

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值