OpenCV 2.4.3.2 を使用してカメラ アプリを作成し、opencv 処理を実行しようとしています。ランドスケープだけでなく、複数の UI 方向を使用できるようにしたいと考えています。
問題は、向きを縦に変更すると画像が横向きになることです。
画像処理を行う前に入力画像を回転させることができることを理解しています(したがって、向きを横向きのままにしておく)。これは問題なく機能しますが、UIの残りの部分が間違った向きになるという問題は解決しません.
また、このコードを使用してカメラを 90 度回転させようとしましたが、うまくいかないようです。
mCamera.setDisplayOrientation(90);
効果がないか、プレビューが真っ暗になることがあります
OpenCVでこれを成功させた人はいますか? 私のクラスは JavaCameraView から拡張されています。
編集
CameraBridgeViewBase.java クラスに表示されるように、OpenCV 内で画像を回転させたという改善を行いました。
配信してフレームを描画する方法:
if (canvas != null) {
canvas.drawColor(0, android.graphics.PorterDuff.Mode.CLEAR);
//canvas.drawBitmap(mCacheBitmap, (canvas.getWidth() - mCacheBitmap.getWidth()) / 2, (canvas.getHeight() - mCacheBitmap.getHeight()) / 2, null);
//Change to support portrait view
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, new Paint());
...基本的に、これは入力画像を次のように回転させるだけです
これはより良いですが、私は明らかにこれを全画面表示にしたいと考えています。