2012-02-05 4 views
1

Highgui.imread 명령을 호출하면 휴대 전화에서 예상치 못한 예외가 발생합니다."Highgui.imread"명령이 작동하지 않습니다. OpenCV Android

이미지를 SDCard에서 MAT 변수로로드하려고합니다.

File imgFile = new File("/sdcard/image1.jpg"); 
if(imgFile.exists()) 
{ 
Mat pic1 = Highgui.imread(imgFile.getAbsolutePath()); 
} 

나는 갤럭시 탭 10.1을 사용하고 + 안드로이드 OS : 3.2 커널 버전 : 2.6.36.3

장치에 오류 : "응용 프로그램 프로젝트 1 (공정 prj.project)가 예기치 않게 중단되었습니다. 다시 시도하십시오. "

미리 도움을 주셔서 감사합니다.

감사합니다, 알리

로그 캣 :

02-06 11:08:23.620: W/dalvikvm(5853): Exception Ljava/lang/UnsatisfiedLinkError; thrown while initializing Lorg/opencv/highgui/Highgui;  
02-06 11:08:23.620: D/AndroidRuntime(5853): Shutting down VM  
02-06 11:08:23.620: W/dalvikvm(5853): threadid=1: thread exiting with uncaught exception (group=0x400fc760)  
02-06 11:08:23.620: E/AndroidRuntime(5853): FATAL EXCEPTION: main  
02-06 11:08:23.620: E/AndroidRuntime(5853): java.lang.ExceptionInInitializerError  
02-06 11:08:23.620: E/AndroidRuntime(5853):  at photo.klu.PhotoKLUActivity$1.onClick(PhotoKLUActivity.java:89)  
02-06 11:08:23.620: E/AndroidRuntime(5853):  at android.view.View.performClick(View.java:3127)  
02-06 11:08:23.620: E/AndroidRuntime(5853):  at android.view.View$PerformClick.run(View.java:12025)  
02-06 11:08:23.620: E/AndroidRuntime(5853):  at android.os.Handler.handleCallback(Handler.java:587)  
02-06 11:08:23.620: E/AndroidRuntime(5853):  at android.os.Handler.dispatchMessage(Handler.java:92)  
02-06 11:08:23.620: E/AndroidRuntime(5853):  at android.os.Looper.loop(Looper.java:132)  
02-06 11:08:23.620: E/AndroidRuntime(5853):  at android.app.ActivityThread.main(ActivityThread.java:4126)  
02-06 11:08:23.620: E/AndroidRuntime(5853):  at java.lang.reflect.Method.invokeNative(Native Method)  
02-06 11:08:23.620: E/AndroidRuntime(5853):  at java.lang.reflect.Method.invoke(Method.java:491)  
02-06 11:08:23.620: E/AndroidRuntime(5853):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844)  
02-06 11:08:23.620: E/AndroidRuntime(5853):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)  
02-06 11:08:23.620: E/AndroidRuntime(5853):  at dalvik.system.NativeStart.main(Native Method)  
02-06 11:08:23.620: E/AndroidRuntime(5853): Caused by: java.lang.UnsatisfiedLinkError: Couldn't load opencv_java: findLibrary returned null  
02-06 11:08:23.620: E/AndroidRuntime(5853):  at java.lang.Runtime.loadLibrary(Runtime.java:425)  
02-06 11:08:23.620: E/AndroidRuntime(5853):  at java.lang.System.loadLibrary(System.java:554)  
02-06 11:08:23.620: E/AndroidRuntime(5853):  at org.opencv.highgui.Highgui.<clinit>(Highgui.java:313)  
02-06 11:08:23.620: E/AndroidRuntime(5853):  ... 12 more  
02-06 11:08:25.640: I/dalvikvm(5853): threadid=4: reacting to signal 3  
02-06 11:08:25.640: I/dalvikvm(5853): Wrote stack traces to '/data/anr/traces.txt' 
+0

작동 예외 및 스택 추적에 대한 로그를 확인하십시오. –

답변

0

OpenCV의 라이브러리가 응용 프로그램에 연결되어 있지 않습니다. 다음 작업을 수행하십시오 (openCV 라이브러리를 작업 영역으로 가져온 것으로 가정합니다). 패키지 탐색기에 > 마우스 오른쪽 버튼으로 선택 OpenCV의 자바에 당신은 OpenCV의

1

에 관련된 아무것도하지 않는 빌드 경로 있는지 확인> 추가를 클릭 도서관에서 응용 프로그램 프로젝트> 속성>을 클릭하면 당신은하지 configurate에서 OpenCV 확인할 수 있습니다 이 튜토리얼 http://opencv.org/platforms/android.html

openCv sdk에서 android를위한 메소드를 호출하려면 먼저 구현해야합니다.

private BaseLoaderCallback mOpenCVCallBack = new BaseLoaderCallback(this) { 
@Override 
public void onManagerConnected(int status) { 
    switch (status) { 
     case LoaderCallbackInterface.SUCCESS: 
     { 
     Log.i(TAG, "OpenCV loaded successfully"); 
     // Create and set View 
     setContentView(R.layout.main); 
     } break; 
     default: 
     { 
     super.onManagerConnected(status); 
     } break; 
    } 
    } 
}; 

다음 방법으로 아래를 호출하십시오.

if (!OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_2, this, mOpenCVCallBack)) 
    { 
     Log.e(TAG, "Cannot connect to OpenCV Manager"); 
    } 
관련 문제