2013-01-11 51 views
0

這是我嘗試使用我正確訪問文件嗎?

File filePath = new File(Environment.getExternalStorageDirectory(), "/test.bmp"); 
String file = filePath.getAbsolutePath(); 
Mat input_mat = Highgui.imread(file); 

當我使用的應用程序與崩潰的最後一行的代碼。我不確定最後一行是否是錯誤,或者我沒有正確訪問test.bmp文件。它保存在SD卡的根目錄下。

這是一個在eclipse上的android應用程序。

編輯logcat的

01-11 22:38:50.288: E/AndroidRuntime(545): FATAL EXCEPTION: main 
01-11 22:38:50.288: E/AndroidRuntime(545): java.lang.UnsatisfiedLinkError: imread_1 
01-11 22:38:50.288: E/AndroidRuntime(545): at org.opencv.highgui.Highgui.imread_1(Native Method) 
01-11 22:38:50.288: E/AndroidRuntime(545): at org.opencv.highgui.Highgui.imread(Highgui.java:324) 
01-11 22:38:50.288: E/AndroidRuntime(545): at com.example.android.photobyintent.PhotoIntentActivity.dispatchProcVideoIntent(PhotoIntentActivity.java:186) 
01-11 22:38:50.288: E/AndroidRuntime(545): at com.example.android.photobyintent.PhotoIntentActivity.access$2(PhotoIntentActivity.java:182) 
01-11 22:38:50.288: E/AndroidRuntime(545): at com.example.android.photobyintent.PhotoIntentActivity$4.onClick(PhotoIntentActivity.java:264) 
01-11 22:38:50.288: E/AndroidRuntime(545): at android.view.View.performClick(View.java:3480) 
01-11 22:38:50.288: E/AndroidRuntime(545): at android.view.View$PerformClick.run(View.java:13983) 
01-11 22:38:50.288: E/AndroidRuntime(545): at android.os.Handler.handleCallback(Handler.java:605) 
01-11 22:38:50.288: E/AndroidRuntime(545): at android.os.Handler.dispatchMessage(Handler.java:92) 
01-11 22:38:50.288: E/AndroidRuntime(545): at android.os.Looper.loop(Looper.java:137) 
01-11 22:38:50.288: E/AndroidRuntime(545): at android.app.ActivityThread.main(ActivityThread.java:4340) 
01-11 22:38:50.288: E/AndroidRuntime(545): at java.lang.reflect.Method.invokeNative(Native Method) 
01-11 22:38:50.288: E/AndroidRuntime(545): at java.lang.reflect.Method.invoke(Method.java:511) 
01-11 22:38:50.288: E/AndroidRuntime(545): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
01-11 22:38:50.288: E/AndroidRuntime(545): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
01-11 22:38:50.288: E/AndroidRuntime(545): at dalvik.system.NativeStart.main(Native Method) 
+1

什麼是logcat的,你所看到的應用程序崩潰時的錯誤消息? –

+1

這與您的問題無關,但我想我會提到文件名中不需要前導'/',「新File()」構造函數會爲您添加它。其次,將文件放在SD卡的頂層是一種糟糕的風格;它會變得非常混亂。您應該爲您的文件創建一個特定於應用程序的目錄。 –

+0

你確定你只是沒有權限訪問SDCard? – Doomsknight

回答

3

這有什麼好做的位圖文件的讀取。 UnsatisfiedLinkError意味着它無法找到實現該類的共享對象(.so文件)。這意味着你的項目配置有問題。您是否將所需文件複製到libs/armeabilibs/armeabi-v7alibs/x86

另見:

Android for OpenCV - error opening trace file, UnsatisfiedLinkError

+0

我沒有。我只能在那裏看到android-support-v4.jar。沒有armeabi armeabi-v7a或x86。什麼是我需要添加的「必需文件」? – user1971343

+0

他們應該在您下載的SDK中。按照http://docs.opencv.org/doc/tutorials/introduction/android_binary_package/O4A_SDK.html – kichik

+0

上的說明找到armeabi-v7a x86和mips,但不是armeabi。我加了他們,但得到了同樣的錯誤。還有什麼我可以嘗試? – user1971343