1. 首先试着把输出的图像竖起来
首先我们把页面的android:screenOrientation="landscape"从水平改成竖向,此时的效果是显示的内容向左旋转90°,然后显示的区域是一个正方形。接着我们开始试着让图像竖起来——
如果大家按照demo试着实现的话想必会让页面实现CameraBridgeViewBase.CvCameraViewListener2这个接口,此接口中需要实现public Mat onCameraFrame(CvCameraViewFrame inputFrame);
这个方法。根据其描述以及自己的猜测,我们可以知道这个方法是在摄像头传帧时被调用到。我们可以在这个方法中去处理所获得到的帧,寻找人脸的操作自然也就在这里进行了。所以我们这寻找人脸的操作之前,先要将图像旋转回来。Mat gray = inputFrame.gray();
rgb = inputFrame.rgba(); // 旋转输入帧
if (isFrontCamera) {
Core.rotate(rgb, rgb, Core.ROTATE_90_COUNTERCLOCKWISE);
Core.rotate(gray, gray, Core.ROTATE_90_COUNTERCLOCKWISE);
Core.flip(rgb, rgb, 1);
Core.flip(gray, gray, 1);
} else {
Core.rotate(rgb, rgb, Core.ROTATE_90_CLOCKWISE);
Core.rotate(gray, gray, Core.ROTATE_90_CLOCKWISE);
}
这里的rgb既是我们得到的彩色图像,gray既是灰度化之