0

すべての OpenCV チュートリアルを実行しようとしていますが、これまでのところ、チュートリアル 2 の顔検出、色ブロブ検出が機能していません。ただし、チュートリアル 0、1、3、および 4 は実行できます。すべてのインクルード パスを追加する必要があるなど、いくつかのエラーを修正しました。

<includepath>${NDKROOT}/platforms/android-9/arch-arm/usr/include</includepath>
<includepath>C:\android-ndk-r8b\sources\cxx-stl\gnu-libstdc++\4.6\libs\armeabi\include</includepath>
<includepath>${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/include</includepath>
<includepath>C:\android-opencv\sdk\native\jni\include</includepath>
<includepath>C:\android-ndk-r8b\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\lib\gcc\arm-linux-androideabi\4.6.x-google\include</includepath>

また、APP_ABI := armeabi を使用するように Application.mk ファイルを更新しました。これにより、Tuts 3 および 4 が機能するようになりました。Android のバージョンはすべて正しいです。

一部の例では C++ コードをまったく使用していませんが、それでもカメラ ラッパー ライブラリを開くことができずに失敗します。これは、ライブラリの各バージョン (libnative_camera_r2.3.3、r2.2.0 など) をリンクしようとするシーケンスを実行したように見える後です。APP_ABI を更新する前に、Tuts 3 および 4 に対してもこれを行っていました:= armeabi -v7 を APP_ABI := armeabi に変更しますが、これは他の Tut の問題を修正しません。

助けてください。私は Android NDK を初めて使用し、Windows で使用した Open CV の経験しかありません。前もって感謝します。

実行できるチュートリアルでは、電話カメラのタイプが Camera であり、.open() コマンドを使用して開かれていることに気付きました。実行されないカメラ、電話カメラは VideoCapture 型として宣言されており、明らかにラッパー ライブラリが必要です。それを電話に入れる方法がわからないだけです。

4

2 に答える 2

1

どうやら、それは私がそれをテストしている私の電話と関係があります:サムスンギャラクシーS。私は非常に似た問題を抱えている他の誰かを見つけました:カメラが機能していません

ピートがこれを解決するために経験した超人的なプログラミングの飛躍を経験するのではなく、私は別の電話、HTCスライドでそれを試すことにしました。見よ、すべてのチュートリアルは問題なく、再コーディングもなく正常に機能しました。

物事を成し遂げるために、私は自分のプロジェクトのHTCスライドを使用します。誰かがより良い解決策に出くわした場合は、私に知らせてください!

更新:私はさらに調査を行いました:http : //answers.opencv.org/question/1223/android-opencv-support/ OpenCV Android Native Cameraは、ハードウェアpaltformベンダーによって変更されているため、すべてのデバイスでサポートされているわけではないようです。

最終更新:チュートリアルをさらに実験して、大きなDUHの瞬間がありました。OpenCVネイティブカメラを使用せずに実際にOpenCVを使用できます。チュートリアル3のSampleViewBaseクラスを変換して、顔検出サンプルのSampleCvViewBaseクラスを置き換えることでこれをテストしましたが、うまく機能しました。主なトリックは、processImage呼び出し中にデータを変換することでした。

capture.retrieve(mRgba, Highgui.CV_CAP_ANDROID_COLOR_FRAME_RGBA);
capture.retrieve(mGray, Highgui.CV_CAP_ANDROID_GREY_FRAME);

なりました

Mat mYuv = new Mat(getFrameHeight()+getFrameHeight()/2, getFrameWidth(), CvType.CV_8UC1);
mYuv.put(0, 0, data);
Imgproc.cvtColor(mYuv, mRgba, Imgproc.COLOR_YUV420sp2RGB, 4);
Imgproc.cvtColor(mRgba, mGray, Imgproc.COLOR_RGB2GRAY, 0);

主な助けは、別のスタックオーバーフローの記事から来ました:OpenCVで使用するためのカメラプレビューをキャプチャします。RGBとグレーマットに変換します。Java。アンドロイド

お会いできなかった場合は、こんにちは、こんばんは、おやすみなさい!

于 2012-09-16T19:59:58.703 に答える