OpenCV Android上的静态初始化

时间:2012-09-27 06:52:17

标签: java android opencv static initialization

我正在尝试运行OpenCV教程1 - 使用this添加静态初始化OpenCV 我不想安装单独的OpenCV Manager应用程序,但我得到"OpenCV error: Cannot load info library for OpenCV."

我做了以下事情:

  1. 添加了一个包含armeabiarmeabi-v7ax86文件夹的libs文件夹(来自OpenCV-2.4.2-android-sdk / sdk / native / libs) /)

  2. 在私有Sample1View mView下面添加了静态{if (!OpenCVLoader.initDebug())}代码;

  3. 删除了以下代码

  4.   

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

    似乎是什么问题?

4 个答案:

答案 0 :(得分:11)

您应该添加代码:

mOpenCVCallBack.onManagerConnected(LoaderCallbackInterface.SUCCESS);

后:

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

如果删除:

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

代码块然后没人打电话。

希望它可以帮到你。

答案 1 :(得分: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);
祝你好运。

答案 2 :(得分:1)

日志消息:

"OpenCV error: Cannot load info library for OpenCV."
不要担心你。至少在我的应用程序中它告诉我类似OpenCV libs init之后就可以了。

在示例代码中,调用BaseLoaderCallback时启用CameraBridgeViewBase对象。当opencv库的异步加载完成时会发生这种情况。 当您静态加载库时,尝试在onResume()方法中添加对mOpenCVCameraView.enableView()的调用(在加载库的库之后)。

答案 3 :(得分:0)

initAsync()需要一个回调来加载opencv libs和你的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。