私はJava openCVを使用しています。写真を読み込んでその上にマッチするテンプレートを実行しようとしています。 テンプレートマッチングメソッドはMatオブジェクトを扱うので、画像をロードしてMatに変換する必要があります。Java openCV - ビットマップをマットに変換中にエラーが発生しました
私はそれを行う方法は、次のとおりです。
Bitmap i = BitmapFactory.decodeFile("/sdcard/TVguide/Detection/detected.jpg");
image = Utils.bitmapToMat(i);
この方法で私は私のAndroidのSDカードから写真をロードし、OpenCVの方法bitmapToMatを使用してマットオブジェクトに変換してみてください。 問題は、変換時にアプリケーションがクラッシュすることです。ここで
はLogCatです:
03-14 15:15:57.636: W/dalvikvm(1059): Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lorg/opencv/android/Utils;
03-14 15:15:57.636: D/AndroidRuntime(1059): Shutting down VM
03-14 15:15:57.636: W/dalvikvm(1059): threadid=1: thread exiting with uncaught exception (group=0x40015578)
03-14 15:15:57.640: E/AndroidRuntime(1059): FATAL EXCEPTION: main
03-14 15:15:57.640: E/AndroidRuntime(1059): java.lang.ExceptionInInitializerError
03-14 15:15:57.640: E/AndroidRuntime(1059): at com.marakana.Preview$3.onPictureTaken(Preview.java:191)
03-14 15:15:57.640: E/AndroidRuntime(1059): at android.hardware.Camera$EventHandler.handleMessage(Camera.java:565)
03-14 15:15:57.640: E/AndroidRuntime(1059): at android.os.Handler.dispatchMessage(Handler.java:99)
03-14 15:15:57.640: E/AndroidRuntime(1059): at android.os.Looper.loop(Looper.java:123)
03-14 15:15:57.640: E/AndroidRuntime(1059): at android.app.ActivityThread.main(ActivityThread.java:3687)
03-14 15:15:57.640: E/AndroidRuntime(1059): at java.lang.reflect.Method.invokeNative(Native Method)
03-14 15:15:57.640: E/AndroidRuntime(1059): at java.lang.reflect.Method.invoke(Method.java:507)
03-14 15:15:57.640: E/AndroidRuntime(1059): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
03-14 15:15:57.640: E/AndroidRuntime(1059): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
03-14 15:15:57.640: E/AndroidRuntime(1059): at dalvik.system.NativeStart.main(Native Method)
03-14 15:15:57.640: E/AndroidRuntime(1059): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load opencv_java: findLibrary returned null
03-14 15:15:57.640: E/AndroidRuntime(1059): at java.lang.Runtime.loadLibrary(Runtime.java:429)
03-14 15:15:57.640: E/AndroidRuntime(1059): at java.lang.System.loadLibrary(System.java:554)
03-14 15:15:57.640: E/AndroidRuntime(1059): at org.opencv.android.Utils.<clinit>(Utils.java:86)
03-14 15:15:57.640: E/AndroidRuntime(1059): ... 10 more
03-14 15:16:03.472: I/Process(1059): Sending signal. PID: 1059 SIG: 9
私が何か間違ったことをやっているか、それだけでバギーOpenCVのであれば、私は理解することはできません。あなたはRGBA形式にあなたのビットマップを変換する必要があり
おかげ エヤル
私は両方の提案を試みましたが、それでも同じlogCatを返します。行と何か関係があります:java.lang.UnsatisfiedLinkError:opencv_javaをロードできませんでした:findLibrary returned null – Eyal
UnsatisfiedLinkErrorはあなたのことを意味します。 apkにはネイティブバイナリは含まれていません。 .apkを解凍して 'libopencv_java.so'の存在を確認することができます。また、電話機にARMv5/ARMv6 CPUが搭載されている場合は、.apkにARMv7のバイナリのみが存在する可能性があります。 –
携帯電話はSamsung Galaxy Sです。いくつかの同級生が同じ電話をopenCVで使用しているので、動作するはずです。私は実際に.apkの意味を理解していませんが、C:\ Development \ OpenCV-2.3.1 \ libs \ armeabi-v7aに行くと、libopencv_java.soが存在します。それはまたarmeabiにも存在します。 – Eyal