我知道现在回答这个问题为时已晚。但我终于找到了不会使相机帧变慢的解决方案。
您必须在默认的 opencv 类中进行更改。
请按照以下步骤操作:1)在 CameraBridgeViewBase 类中添加以下代码
Matrix matrix = new Matrix();
matrix.setRotate(90f);
Bitmap bitmap = Bitmap.createBitmap(mCacheBitmap, 0, 0, mCacheBitmap.getWidth(), mCacheBitmap.getHeight(), matrix, true);
2) 现在在 drawbitmap 方法中用 mCacheBitmap 替换上面的位图,如下所示
if (mScale != 0) {
canvas.drawBitmap(bitmap, new Rect(0,0,bitmap.getWidth(), bitmap.getHeight()),
new Rect((int)((canvas.getWidth() - mScale*bitmap.getWidth()) / 2),
(int)((canvas.getHeight() - mScale*bitmap.getHeight()) / 2),
(int)((canvas.getWidth() - mScale*bitmap.getWidth()) / 2 + mScale*bitmap.getWidth()),
(int)((canvas.getHeight() - mScale*bitmap.getHeight()) / 2 + mScale*bitmap.getHeight())), null);
} else {
canvas.drawBitmap(bitmap, new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()),
new Rect((canvas.getWidth() - bitmap.getWidth()) / 2,
(canvas.getHeight() - bitmap.getHeight()) / 2,
(canvas.getWidth() - bitmap.getWidth()) / 2 + bitmap.getWidth(),
(canvas.getHeight() - bitmap.getHeight()) / 2 + bitmap.getHeight()), null);
}
3) 现在,在您的 JavaCameraView 类中替换 initializeCamera 方法中的以下代码(更改纵向模式的高度、宽度)
if ((getLayoutParams().width == ActionBar.LayoutParams.MATCH_PARENT) && (getLayoutParams().height == ActionBar.LayoutParams.MATCH_PARENT))
mScale = Math.min(((float)height)/mFrameWidth, ((float)width)/mFrameHeight);
else
mScale = 0;
你就完成了!希望它有所帮助..