使用opencv使用android肖像模式时的问题
我知道这是重复最多的问题之一,然而,在付出了这么多努力之后,没有找到任何有效的解决方案 这确实是一个致命的问题,尽管对专家来说可能是一个简单的问题 我正在研究opencv Haar Cascade分类器(例如:人脸检测、眼睛对检测) 我刚刚从“OpenCV-2.4.9-android-sdk”样本中获取了人脸检测样本代码。 此示例代码在横向模式下设置,一切正常 但是,我想让分类器在纵向模式下工作。我知道haar分类器不是为使用肖像模式而设计的 由于opencv使用“CameraBridgeViewBase”,因此我无法使用所有控件来播放相机分辨率和显示图像 图像返回屏幕。(预览) 现在,当我将屏幕方向设置为“android:screenOrientation=“grait””时,图像将按时钟旋转90度 我试过什么: 要在不旋转的情况下预览纵向图像:我通过添加使用opencv使用android肖像模式时的问题,android,opencv,android-camera,face-detection,Android,Opencv,Android Camera,Face Detection,我知道这是重复最多的问题之一,然而,在付出了这么多努力之后,没有找到任何有效的解决方案 这确实是一个致命的问题,尽管对专家来说可能是一个简单的问题 我正在研究opencv Haar Cascade分类器(例如:人脸检测、眼睛对检测) 我刚刚从“OpenCV-2.4.9-android-sdk”样本中获取了人脸检测样本代码。 此示例代码在横向模式下设置,一切正常 但是,我想让分类器在纵向模式下工作。我知道haar分类器不是为使用肖像模式而设计的 由于opencv使用“CameraBridgeVie
Matrix matrix = new Matrix();
matrix.preTranslate((canvas.getWidth() - mCacheBitmap.getWidth()) / 2,(canvas.getHeight() - mCacheBitmap.getHeight()) / 2);
if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
matrix.postRotate(90f,(canvas.getWidth()) / 2,(canvas.getHeight()) / 2);
canvas.drawBitmap(mCacheBitmap, matrix, null);
使分类器在纵向模式下工作:
我玩了各种各样的排列和组合转置和翻转来旋转灰度图像,我在“onCameraFrame”中传递给detectmultiscale
我的问题是什么?
Matrix matrix = new Matrix();
matrix.preTranslate((canvas.getWidth() - mCacheBitmap.getWidth()) / 2,(canvas.getHeight() - mCacheBitmap.getHeight()) / 2);
matrix.postRotate(90f,(canvas.getWidth()) / 2,(canvas.getHeight()) / 2);
float scale = (float) canvas.getWidth() / (float) mCacheBitmap.getHeight();
matrix.postScale(scale, scale, canvas.getWidth()/2 , canvas.getHeight()/2 );
canvas.drawBitmap(mCacheBitmap, matrix, new Paint());
这提供了正确比例的肖像模式:D请试试。我使用的是OpenCV 3.4。有人能帮我一把吗?开发人员不愿意帮助我们,关于如何解决这个问题,有很多相互矛盾的想法。