我正在使用Java openCV,並嘗試加載照片並運行匹配的模板。 模板匹配方法處理Mat對象,所以我需要加載圖像並將它們轉換爲Mat。Java openCV - 將位圖映射到Mat的錯誤
我做到這一點的方法是:
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。
感謝 的Eyal
我已經嘗試了這兩個建議,但它仍然返回相同的logCat。也許是與該行有關:java.lang.UnsatisfiedLinkError:無法加載opencv_java:findLibrary返回null – Eyal 2012-03-13 16:45:02
UnsatisfiedLinkError意味着你的。 apk不包括本機二進制文件。您可以解壓縮.apk並檢查是否存在'libopencv_java.so'。也有可能.apk只有ARMv7的二進制文件,而手機有ARMv5/ARMv6 CPU。 – 2012-03-13 16:56:24
這款手機是三星Galaxy S,我相信它應該可以工作,因爲有些同學用openCV使用了同樣的手機。我不真正理解.apk是什麼意思,但是當我轉到C:\ Development \ OpenCV-2.3.1 \ libs \ armeabi-v7a時,libopencv_java.so存在。它也存在於armeabi中。 – Eyal 2012-03-13 16:59:54