Android Studioを使ってOpenCV 4.1.0プロジェクトを作成する手順


一、OpenCV 
OpenCV(オープンソースコンピュータビジュアルライブラリ)は、オープンソースのコンピュータビジョンとマシン学習ソフトウェアライブラリであり、CとC+に基づくクロスプラットフォームコンピュータ視覚処理ライブラリである。
ダウンロード
Andoridに基づくコンピュータビジョンを開発するアプリケーションは、OpenCV 4.1.0-droid SDKを使用することができます。
公式サイトからOpenCV 4.1.0 For Android SDKをダウンロードします。
https://sourceforge.net/projects/opencvlibrary/files/4.1.0/opencv-4.1.0-android-sdk.zip/download
三、Android Studioを使ってOpenCV 4.1.0に基づくモバイルアプリケーションを開発する。
(1)プラットフォームバージョン
Android Studio 3.2.1
 (2)Androidプロジェクトの新規作成
新建项目(支持C++)



(3)OPECV 4.1.0 Android SDKのjavaモジュールをプロジェクトに導入する
a)ダウンロードしたopencv-4.1.0-android-sdk.zipファイルを解凍し、解凍して「opencv-4.1.0-android-sdk\OpenCV-android-sdk\sdk」のディレクトリに入ると、次のようなファイルがあります。

b)Javaモジュールを作成したプロジェクトに導入する



c)すでにopencv 41 Libsに名前を変えたjavaモジュール、すなわちopencv 41 Libsモジュールが対応するbuild.gradleファイルを修正する。
三つの注意事項があります。
  • は、ファイル中の「appyplugin:'comp.android.aplication'」を「appyplugin:'comp.android.library'」に変更しました。
  • は、ファイル中の自動生成された「appication Id」「org.opencv」を削除します。Oopencv 41 Libsモジュールは、アプリケーションではなく在庫として存在しています。
  • は、compleSdk Version、buildTools Version、minSdk Version、target Sdk Versionの属性値の設定をapに対応するbuild.gradleファイルの構成と一致させる。
  • 例えば、appに対応するbuild.gradleは、
    
    apply plugin: 'com.android.application'
    
    android {
      compileSdkVersion 28
      defaultConfig {
        applicationId "app.userhu2012.test"
        minSdkVersion 27
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        externalNativeBuild {
          cmake {
            cppFlags "-frtti -fexceptions"
          }
        }
      }
      buildTypes {
        release {
          minifyEnabled false
          proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
      }
      externalNativeBuild {
        cmake {
          path "CMakeLists.txt"
        }
      }
    }
    opencv 41 Libsに対応するbuild.gradleファイルの構成は以下の通りである。
    
    apply plugin: 'com.android.library'
    
    android {
      compileSdkVersion 28
      buildToolsVersion "28.0.3"
    
      defaultConfig {
        //applicationId "org.opencv"
        minSdkVersion 27
        targetSdkVersion 28
      }
    
      buildTypes {
        release {
          minifyEnabled false
          proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
      }
    }
    d)libsライブラリの設定
    プロジェクトアプリのsrc/mainディレクトリの下にjniLibsディレクトリを作成します。

    opencv 4.1.0 android sdkのopencv-4.1.0-android-sdk\OpenCV-android-sdk\sdkative\libsライブラリのすべてのアーキテクチャファイルをjniLibsディレクトリにコピーします。


    プロジェクトアプリモジュールに対応するbuild.gradleを配置し、jniLibs.srDirsパラメータを追加します。
    
    sourceSets{
      main{
        jniLibs.srcDirs = ['src/main/jniLibs']
      }
    }
    また、サポートされているndkタイプは、下図のように、既知のアーキテクチャパッケージをap対応のbuild.gradleに書き込みます。

    プロジェクトアプリの依存項目を設定し、「ファイル」-「Project Structure」を選択して、アプリモジュールの依存モジュールを下図のように設定します。

    「OK」を選択すると、アプリモジュールに対応するbuild.gradleのファイルは以下の通りです。
    
    apply plugin: 'com.android.application'
    android {
      compileSdkVersion 28
      defaultConfig {
        applicationId "app.userhu2012.test"
        minSdkVersion 27
        targetSdkVersion 28
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        externalNativeBuild {
          cmake {
            cppFlags "-frtti -fexceptions"
          }
        }
        ndk{
          abiFilters "arm64-v8a","armeabi-v7a","x86","x86_64"
        }
      }
      buildTypes {
        release {
          minifyEnabled false
          proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
      }
      sourceSets{
        main{
          jniLibs.srcDirs = ['src/main/jniLibs']
        }
      }
      externalNativeBuild {
        cmake {
          path "CMakeLists.txt"
        }
      }
    }
    
    dependencies {
      implementation fileTree(include: ['*.jar'], dir: 'libs')
      implementation 'com.android.support:appcompat-v7:28.0.0'
      testImplementation 'junit:junit:4.12'
      androidTestImplementation 'com.android.support.test:runner:1.0.2'
      androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
      implementation project(':opencv41Libs')
    }
    
    このように構成すれば、Android Studioを使用してOpenCV 4.1.0プロジェクトを作成することができます。
    ここでは、Android Studioを使ってOpenCV 4.1.0プロジェクトを作成する手順についての記事を紹介します。これに関連して、Android StudioからOpenCVコンテンツを作成します。以前の記事を検索してください。または、下記の関連記事を引き続きご覧ください。これからもよろしくお願いします。