2012-09-27 62 views
19

我試圖運行OpenCV教程1 - 添加OpenCV的使用this
我不想安裝一個單獨的OpenCV Manager應用程序靜態初始化),但我得到一個"OpenCV error: Cannot load info library for OpenCV."靜態初始化上的OpenCV的Android

我做以下東西:

  1. 加入庫文件夾armeabiarmeabi-v7a,和x86夾在它的內部(從OpenCV的-2.4.2-Android的SDK/SDK /天然的/庫/)

  2. 添加靜態{if (!OpenCVLoader.initDebug())}代碼就在私人Sample1View mView下方;

  3. 刪除下面的代碼

如果(!OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_2,這一點, mOpenCVCallBack))

似乎是什麼問題?後

mOpenCVCallBack.onManagerConnected(LoaderCallbackInterface.SUCCESS); 

+0

我也遇到同樣的問題。你解決了這個問題嗎? – Manoj

+0

@Manoj可悲的是,沒有人爲此提供瞭解決方案。 – Droidkie

+15

我仍然對OpenCV維護者認爲這應該是一個'調試'設置感到困惑。如果用戶下載應用程序,那麼讓他們在應用程序內下載應用程序似乎是不直觀的。應用程序提供商應該負責使用哪些第三方庫版本並進行測試,因爲不能保證OpenCV的更新版本能夠與我的應用程序無縫協作。 –

回答

10

您應該添加的代碼

if(!OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_2, this, mOpenCVCallBack)) 

如果刪除:

if(!OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_2, this, mOpenCVCallBack)) 

代碼塊則無人造訪的。

希望它能幫助你。

+1

請編輯您的答案並對代碼進行格式化以使其可讀。 – kleopatra

+0

我改變了! –

+1

我們應該在哪裏添加此代碼?什麼是類名? – daigoor

1

日誌消息:

"OpenCV error: Cannot load info library for OpenCV." 

shuld不用擔心你。至少在我的應用程序中,它告訴我一些像OpenCV libs init之後的事情。

在示例代碼中,當BaseLoaderCallback被調用時,CameraBridgeViewBase對象被啓用。當opencv庫的異步加載完成時會發生這種情況。 靜態加載庫時,請嘗試在onResume()方法中加載對mOpenCVCameraView.enableView()的調用(加載庫中的lib後)。

0

initAsync()需要一個回調來加載opencv庫和你的jni庫。

檢查回調函數並使其在if(!OpenCVLoader.initDebug())中正確,而不是在回調中!

  if (!OpenCVLoader.initDebug()) { 
      // Handle initialization error 
       Log.i(TAG, "OpenCV load not successfully"); 
     } else { 
      System.loadLibrary("mixed_sample"); 
      //System.loadLibrary("my_jni_lib2"); 

      InitFeature(width,height); 

      mOpenCvCameraView.enableView(); 
     } 

它適用於OCV4Android2.4.5中的教程2。

4

我有同樣的問題,我已經在我的第一Activity類的添加以下代碼解決了這個問題:

static { 
    if (!OpenCVLoader.initDebug()) { 
     // Handle initialization error 
    } 
} 

此外,我行前加入

mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS); 

OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback); 

並評論該行

OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback); 

祝你好運。

+0

您正在混合靜態和異步初始化。 –