0

我需要在我的应用程序中集成 OpenCV 2.4。首先,我发现它需要 OpenCV Manager 才能运行基于 OpenCV 的应用程序。但是,经过一番谷歌搜索,我发现了另一种使用静态初始化的方法herehere。我试过但它不起作用:

伪代码:

    public class MainActivity extends Activity {

static {
    if (!OpenCVLoader.initDebug()) {
        Log.d(TAG,"init failed")
    }
}

        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();   
            OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_4, this,
                    mLoaderCallback);
        }
    }

我试过了,但这不起作用。它显示了安装 openCV Manager 的相同弹出窗口。

我还尝试initAsync()在 onResume 和mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);中删除 但是当我使用它时应用程序崩溃了。

谁能指导我正确的方式?请不要标记为重复;关于 SO 的问题有成百上千个没有答案。

4

2 回答 2

1

如果您使用 Android Studio,请检查:https ://github.com/floatlearning/android-opencv-template 然后,在 Android 设备上安装属性 OpenCV Manager

于 2015-08-02T07:08:23.640 回答
0

我自己解决了。您不需要.so在 JNI 库之后编写扩展。

我以错误的方式写了这个:

System.loadLibrary("lib1.so");
System.loadLibrary("lib2.so");

毕竟,我找到了正确的方法

System.loadLibrary("lib1");
System.loadLibrary("lib2");

如前所述,不需要编写.so扩展名。

于 2015-08-29T09:56:54.513 回答