0

アプリに OpenCV 2.4 を統合する必要があります。最初に、OpenCV ベースのアプリを実行するには OpenCV Manager が必要であることがわかりました。しかし、グーグルで調べた後、静的初期化hereおよび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 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

私はそれを自分で解決しました。.soJNI ライブラリの後に拡張機能を記述する必要はありません。

私はこれを間違った方法で書きました:

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

結局のところ、私は正しい方法を見つけました:

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

前述のとおり、.so拡張子を記述する必要はありません。

于 2015-08-29T09:56:54.513 に答える