上一篇:实现效果是后置摄像头的调用,进行人脸检测效果。
1.调用前置摄像头比较简单,直接在onCreate方法里设置调用前置摄像头,参数0为后置,参数1为前置。
mOpenCvCameraView.setCameraIndex(1);
使用OpenCV的Android接口,要想显示从摄像头输入的视频,可以使用CameraBridgeViewBase类,mOpenCvCameraView就是CameraBridgeViewBase的成员变量。
问题:相机中的人是倒转过来的。检测人脸,使用OpenCV自带的显示的过程中和平常是不一样的,也就是说和自带相机的那种显示是不一样的,相机的显示就类似镜子的显示,而OpenCV则接近真实显示,即一个一模一样的你和你对立站立。这样的话,当你旋转手机的时候问题就出现了,当旋转90度的时候,显示的视频和你真实的方向就正好差了180度,也就成反的了,这在需要检测人脸的应用中很不方便,因为反转的图片OpenCV是检测不到人脸的。
2.在public Mat onCameraFrame(CvCameraViewFrame inputFrame) 函数中使用core类中的file方法。
//得到摄像头视频的每一个frame
mRgba = inputFrame.rgba();//color frame
mGray = inputFrame.gray();// gray frame
Core.flip(mRgba, mRgba, 1);//flip aroud Y-axis 函数很简单,一个输入Mat,一个输出Mat,filpCode有三种情况,0为绕X轴翻转,大于的0代表绕Y轴翻转,-1代表即桡X轴也绕Y轴翻转。