Android 的 openCV - 集成问题

openCV for Android - problems in integration

我需要在我的 app.First 中集成 OpenCV 2.4,我发现它需要 OpenCV Manager for 运行 基于 OpenCV 的应用程序。但是,经过一些谷歌搜索,我发现了另一种使用静态初始化的方法 here and here。我试过了,但没有用:

伪代码:

    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 管理器的相同弹出窗口。

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

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

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

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

我写错了:

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

毕竟找到了正确的方法:

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

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