投稿して新しくなりましたので、よろしくお願いします。私はこれに関連する事実上すべての他の質問を見て、ほとんど試しましたが、完全に挫折しています。私は単に、私のAndroid携帯電話に、風景ではなくポートレートモードでカメラを表示させたいだけです。私は単にopencvで提供されているImageManipulationsサンプルを変更しています。Androidカメラを強制的にポートレートモードで表示する方法、または代わりに回転を行う方法
私はopencv 3.01、Android sdk version 23、Android Studio 2.0、Androidバージョン6.0.1のNexus 5電話を使用しています。これは4/28/2016です。これはすべての最新の安定バージョンです。
私はすでにとAndroidManifest.xmlファイルにポートレートモードにアプリを余儀なくされています:
android:screenOrientation="portrait"
、全体のアプリが正しくポートレートモードで表示されますが、表示されたカメラ画像を90度回転させます。言い換えると、頭を90度左に傾けると、適切な画像が表示されます。だから私は右にイメージを回転する必要があります。
私はOpenCVのTutorial3コードとsetDisplayOrientation(90)を使用してみました:
public void setResolution(Size resolution) {
disconnectCamera();
mMaxHeight = resolution.height;
mMaxWidth = resolution.width;
// mCamera.setDisplayOrientation(90); //* Crashes if placed here
connectCamera(getWidth(), getHeight());
mCamera.setDisplayOrientation(90); //* Doesn't crash if here, but doesn't work either
}
を、それは動作しませんでした。いずれにしても、このチュートリアルでは、Androidバージョン21で廃止予定の「カメラ」クラスを使用し、「camera2」クラスに置き換えました。最新のAPIを使いたいと思ったので、私はこれ以上遠慮しませんでしたが、おそらくcamera2の何かが動作するかもしれません。
一部の人々は、画像を回転させる「転置」使用と「フリップ」機能について投稿し、私はonCameraFrame方法で、この多くの方法をやってみました:
オリジナル、動作しますが、回転:
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
Mat rgba = inputFrame.rgba();
... do stuff to the image ...
return rgba;
画像の表示が消灯し、私のFPSの計算はゼロ(変な)に行く::
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
Mat rgba = inputFrame.rgba();
// Rotate clockwise 90 degrees
Core.transpose(rgba, rgba);
Core.flip(rgba, rgba, 1);
... do stuff to the image ...
return rgba;
180度回転させ、ビデオディスプレイは再び、今はまだlandscapひっくり返さが、 Eモード:
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
Mat rgba = inputFrame.rgba();
// Rotate clockwise 90 degrees, then 90 degrees again
Core.transpose(rgba, rgba);
Core.flip(rgba, rgba, 1);
Core.transpose(rgba, rgba);
Core.flip(rgba, rgba, 1);
... do stuff to the image ...
return rgba;
onCameraFrameがオリジナルと異なる解像度のマットを返した場合、表示が空白になるようなので、それが見えます。 onCameraFrameのドキュメントはスケッチです - そうですか?
onCameraFrameが呼び出される前にこのイメージローテーションを実行する必要がある別の場所がありますか?別の方法では、代わりにポートレートモードでフレームを提供するようにカメラに強制することはできますか?
私は以前のバージョンのopencv --version 2.4.11に戻って、それが役立つかどうかを確認しました。また、提供されたサンプルをまったく動作させるための問題が発生しました:https://stackoverflow.com/質問/ 36977202/how-to-get-opencv-samples-to-work-with-android-studio-2-1/37126957#37126957まだ愛はありません。 –