2016-01-17 3 views
0

Я попытался инициализировать openCv, чтобы использовать камеру. библиотеки инициализируются успешно, но когда я пытался инициализировать openCc она возвращается сообщение об ошибке:Не удалось запустить услугу Цель: initOpenCV

01-17 14:19:24.606 8747-8747/com.pettracker.objecttracker E/OpenCV could not be loaded!: CameraTest::CameraPreview 
01-17 14:19:24.606 1267-1476/system_process W/ActivityManager: Unable to start service Intent { act=org.opencv.engine.BIND pkg=org.opencv.engine } U=0: not found 
01-17 14:19:24.606 1267-1278/system_process W/ActivityManager: Unbind failed: could not find connection for [email protected] 

я пытаюсь использовать библиотеку OpenCV использовать камеру для отслеживания цвета. код показан ниже:

public CameraPreview(ICameraPreviewCallback context, IFrameProcessor frameProcessor) { 
     super((Context)context); 
     mContext = context; 
     System.out.println(mContext); 
     mFrameProcessor = frameProcessor; 
     if (!loadOpenCV()) { 
      Log.e("OpenCV could not be loaded!", TAG); 
     } 
    } 


private boolean loadOpenCV() { 
    return OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_2, (Context)mContext, this); 
} 

Кроме того, я модифицировал initOpenCv, так что я не буду работать в неявное призвание намерения, код показан ниже:

public static boolean initOpenCV(String Version, final Context AppContext, 
     final LoaderCallbackInterface Callback) 
{ 
    AsyncServiceHelper helper = new AsyncServiceHelper(Version, AppContext, Callback); 
    Intent intent = new Intent("org.opencv.engine.BIND"); 
    intent.setPackage("org.opencv.engine"); 
    if (AppContext.bindService(intent, 
      helper.mServiceConnection, Context.BIND_AUTO_CREATE)) 
    { 
     return true; 
    } 
    else 
    { 
     AppContext.unbindService(helper.mServiceConnection); 
     InstallService(AppContext, Callback); 
     return false; 
    } 
} 

, что может быть причиной этой ошибки? и как я могу это исправить?

ответ

0

кажется, что вы использовали статическую инициализацию OpenCV. Вы скопировали родную LIBS в директории проекта вы можете посмотреть на этот учебник here

//try useing this code for initilization of OpenCv insted of yours. 
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { 
    @Override 
    public void onManagerConnected(int status) { 
     switch (status) { 
     case LoaderCallbackInterface.SUCCESS: { 
      Log.i(TAG, "OpenCV loaded successfully"); 

     } 
      break; 
     default: { 
      super.onManagerConnected(status); 
     } 
      break; 
     } 
    } 
}; 

@Override 
public void onResume() { 
    super.onResume(); 
    if (!OpenCVLoader.initDebug()) { 
     Log.d(TAG, 
       "Internal OpenCV library not found. Using OpenCV Manager for initialization"); 
     OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, 
       mLoaderCallback); 
    } else { 
     Log.d(TAG, "OpenCV library found inside package. Using it!"); 
     mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS); 
    } 
} 
+0

загрузил неправильный фрагмент моего кода проекта, правильная версия проиллюстрирована в отредактированной версии моего вопроса выше и я изменил ошибки, чтобы уточнить. Кроме того, я уже добавил собственные библиотеки в свой проект. –

+0

Я отредактировал ответ для вас и еще одну вещь, используя OpenCVLoader.initAsync(), вам не нужно добавлять собственные библиотеки. вам просто нужно будет скачать opencv-менеджер из игрового магазина –

+0

Большое вам спасибо, я загрузил последнюю версию openCv-менеджера на моем эмуляторе, и все прошло хорошо. –

Смежные вопросы