OpenCVでクラスVideoCaptureを使用するときにカメラを回転させる方法は? (Android での顔検出のサンプル)。私はキャンバスを回転させています:
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT)
{
Matrix matrix = new Matrix();
matrix.preTranslate(
(canvas.getWidth() - bmp.getWidth()) / 2,
(canvas.getHeight() - bmp.getHeight()) / 2);
matrix.postRotate(270f, (canvas.getWidth()) / 2,
(canvas.getHeight()) / 2);
canvas.drawBitmap(bmp, matrix, null);
}
ただし、カメラからの画像は回転しません。顔検出は機能しません。
カメラは次からストリームを受け取ります。
protected Bitmap processFrame(VideoCapture capture) {
capture.retrieve(mRgba, Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA);
capture.retrieve(mGray,
Highgui.CV_CAP_ANDROID_GREY_FRAME);
更新私は次のことをしました:
@Override
protected Bitmap processFrame(VideoCapture capture) {
if (getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
Core.flip(mRgba.t(), mRgba, 0);
}
else {
}
capture.retrieve(mRgba, Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA);
capture.retrieve(mDetect_thread.mGray,
Highgui.CV_CAP_ANDROID_GREY_FRAME);
しかし、うまくいきません。ポートレットの向きでプログラムを実行すると(Androidデバイス上)-プログラムが起動しません 横向きでプログラムを実行すると-プログラムは動作しますが、デバイスを回転させるとプログラムは動作しますが、ディスプレイ上の画像は回転しません