web-dev-qa-db-ja.com

OpenCV ManagerをAndroid Appに統合する方法

私はAndroidアプリでOpenCV2.4.7ライブラリを使用しています。アプリが起動すると、OpenCVマネージャーと呼ばれるアプリケーション用のGoogle Playストアに行きます。このアプリケーションをAndroid apkはOpenCVライブラリを既に使用しているため、アプリに再びOpenCVエンジンが必要な理由は?このエンジンを統合する方法はありますか?

31
Vijay007

はい。アプリケーション内にOpenCVを統合し、OpenCVマネージャーの明示的なインストールを回避するには、まずOpenCVが提供する次のドキュメントを読む必要があります。

最初の読み取り-> OpenCVの静的初期化

正常に手順を実行した後、OpenCV APIを呼び出す前に、アプリケーション初期化コードでOpenCVを有効にする次のコードを記述する必要があります。たとえば、Activityクラスの静的セクションで実行できます。

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

参照:

  1. http://answers.opencv.org/question/2033/use-opencv-on-Android-without-manager/
  2. OpenCV Androidでの静的初期化

編集

Documentの新しいシナリオに従って、新しい情報を提供してくれた@rozhokに感謝します。initDebug()メソッドは本番ビルドには使用できません

注このメソッドは、実動コードでは非推奨です。これは、実験的およびローカル開発の目的でのみ設計されています。アプリを公開する場合は、非同期初期化を使用したアプローチを使用します。

あなたはそのために次の方法を使用する必要があります

構文

static boolean initAsync(String Version, Context AppContext, LoaderCallbackInterface Callback)

public class Sample1Java extends Activity implements CvCameraViewListener {

    private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
        @Override
        public void onManagerConnected(int status) {
            switch (status) {
                case LoaderCallbackInterface.SUCCESS:
                {
                    Log.i(TAG, "OpenCV loaded successfully");
                    mOpenCvCameraView.enableView();
                } break;
                default:
                {
                    super.onManagerConnected(status);
                } break;
            }
        }
    };

    @Override
    public void onResume()
    {
        super.onResume();
        OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_6, this, mLoaderCallback);
    }

    ...
}

参考文献

  1. http://docs.opencv.org/doc/tutorials/introduction/Android_binary_package/dev_with_OCV_on_Android.html
23
Chintan Rathod

これは、OpenCVマネージャーのインストールに関するドキュメントの記述です。

apkフォルダーにはAndroidターゲットにインストールするパッケージAndroidデバイスOpenCV Manager APIを介したOpenCVライブラリへのアクセスを有効にします(以下の詳細を参照)。

Google Playマーケット(およびインターネット)にアクセスできる実稼働デバイスでは、これらのパッケージはOpenCVマネージャーAPIを使用したアプリケーションの最初の起動時にマーケットからインストールされます。

...

注:インターネットからのインストールは、OpenCVチームが市場でこのパッケージの更新バージョンを公開する可能性があるため、望ましい方法です。

詳しくはこちらをご覧ください: https://docs.opencv.org/3.0-beta/doc/tutorials/introduction/Android_binary_package/O4A_SDK.html#general-info

1
Luis Sandoval
  1. OpenCV.mkファイルにインクルード$(CLEAR_VARS)の後にこの行を挿入します
    OPENCV_CAMERA_MODULES:=on
    OPENCV_INSTALL_MODULES:=on
    include D:/opencv_with/OpenCV-2.4.10-Android-sdk/sdk/native/jni/OpenCV.mk
    
  2. 現在のプロジェクトディレクトリのlibsフォルダーで、OpenCV libs内のすべてのフォルダーをコピーします。

  3. アクティビティに追加する

    if (!OpenCVLoader.initDebug()) {
                Log.d("ERROR", "Unable to load OpenCV");
            } else {
                mLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS);
            }
    
    private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
    
            @Override
            public void onManagerConnected(int status) {
                switch (status) {
                case LoaderCallbackInterface.SUCCESS: {
    
                    //Your opencv Operation code
    
                }
                }
            }
        };
    
0
MIkka Marmik