2013-09-02 7 views
1

내 안드로이드 프로젝트에서 opencv를 사용하려고합니다. 지난 몇 주 동안 내가 한 일의 전체 목록은 다음과 같습니다.안드로이드에서 Opencv를 사용하여 가장자리 감지

1- I used my mobile phone camera to take a picture stored it as bitmap 
2- Ran face detection on it 
3- Now i was supposed to use android opencv to highlight the edges in the face detection bitmap 

나는 ndk에 대해 많이 모른다. 내가 한 모든 내 응용 프로그램이 같은 라이브러리 프로젝트를 사용하여 내 프로젝트 작업 공간으로 가져온 안드로이드 OpenCV의 SDK를 다운로드 한 내 안드로이드 응용 프로그램에서 다음 코드를 사용하고 있습니다 :

Bitmap canny_image = Bitmap.createBitmap(bmFace.getWidth(), bmFace.getHeight(), Config.ARGB_8888); 
     canny_image = bmFace.copy(Config.ARGB_8888, true); 
     Mat mImg = new Mat(); 
     Utils.bitmapToMat(canny_image,mImg); 

     //Converting to grayscale 
     Mat mGray = new Mat(mImg.rows(), mImg.cols(), CvType.CV_8UC1, new Scalar(0)); 
     Imgproc.cvtColor(mImg , mGray, Imgproc.COLOR_BGRA2GRAY, 4); 
     //Applying Canny 
     Imgproc.Canny(mGray, mGray, 80, 90); 

     //Converting back to 4 channel image 
     Imgproc.cvtColor(mGray , mImg, Imgproc.COLOR_GRAY2RGBA, 4); 
     canny_image.recycle(); 
     System.gc(); 
     canny_image = Bitmap.createBitmap(mImg.cols(), mImg.rows(), Bitmap.Config.ARGB_8888); 
     Utils.matToBitmap(mImg, canny_image); 

는 로그 캣이 만족 링크 오류를 보여주고있다 그러나. 이제 here의 설명서를 사용하십시오.

이 링크에 지점이있다 :

If your application project doesn’t have a JNI part, just copy the corresponding OpenCV native libs from <OpenCV-2.4.6-android-sdk>/sdk/native/libs/<target_arch> to your project directory to folder libs/<target_arch>. 

In case of the application project with a JNI part, instead of manual libraries copying you need to modify your Android.mk file: add the following two code lines after the "include $(CLEAR_VARS)" and before "include path_to_OpenCV-2.4.6-android-sdk/sdk/native/jni/OpenCV.mk" 

내가 동일했다. 내 응용 프로그램에서 폴더 libs 만들고 /sdk/네이티브/libs/

에있는 모든 .so 파일을 복사하지만 내 라이브러리 프로젝트에 application.mk 및 android.mk 파일이 포함되어 있지 않습니다. . 내 안드로이드 응용 프로그램에서 opencv를 사용하는 방법이 완전히 엉망입니다.

private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { 
    @Override 
    public void onManagerConnected(int status) { 
     switch (status) { 
      case LoaderCallbackInterface.SUCCESS: 
      { 
       Log.i(TAG, "OpenCV loaded successfully"); 
       mOpenCvCameraView.enableView(); 
      } break; 
      default: 
      { 
       super.onManagerConnected(status); 
      } break; 
     } 
    } 
}; 

내가 언급 한 바와 같이 동일한 링크에서 참조 : 나는 연결 문제는 내가 내 코드에서 라이브러리를로드하지 않은 그러나 다시 난 내 응용 프로그램에서이 코드를 사용하는 경우 예외를 제공한다는 사실에 기인 생각 위. 전문가의 도움을 받으십시오. 진지한 도움이 필요해. 거의 일주일 정도 동안 여기 붙어 있었어. 내 안드로이드 응용 프로그램에서 opencv를 어떻게 성공적으로 사용할 수 있습니까? 나는 무엇을 놓치고 있습니까?

+0

파일 Android_Mk 및 Application.mk 넣기 – user1755546

+0

"폴더를 libs로 만들고 .so 및 .h 파일을/sdk/native/libs /에 복사했습니다.이 경우 폴더를 유지해야합니다 아키텍처'/ sdk/native/libs' 디렉토리에서 :'libs/armeabi','libs/armeabi-v7a' 등의 폴더가 있어야합니다. – mbrenon

답변

0

초기화하기 전에 라이브러리를 호출 할 때이 오류가 표시됩니다. 여기를 참조하십시오 : Android UnsatisfiedLinkError with OpenCV 2.4.2. 정답 아래의 주석 글타래를 참조하십시오. 따라서 라이브러리를 초기화 한 다음 "Log.i (TAG,"OpenCV loaded successfully ");"아래에 원하는 것을 추가하십시오.

관련 문제