使用Android Studio創建OpenCV 4.1.0 項目

一、OpenCV 

OpenCV(開源計算機視覺庫)是一個開源的計算機視覺和機器學習軟件庫,是一個基於C與C++的跨平臺計算機視覺處理庫。

二、下載

開發基於Andorid的計算機視覺的應用可以使用OpenCV 4.1.0-Android 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)將OPENCV 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)將已經改名爲opencv41Libs(命名自行定義)的java模塊,即opencv41Libs模塊修改對應的build.gradle文件

有三處需要注意:

  • 將文件中的 "apply plugin: 'com.android.application'"修改爲“apply plugin: 'com.android.library'”
  • 將文件中的自動生成的“applicationId "org.opencv"”刪除,因爲opencv41Libs模塊是作爲庫存在而不是應用存在
  • 將compileSdkVersion 、buildToolsVersion、minSdkVersion 、targetSdkVersion 屬性值的設置與app對應的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"
        }
    }
}

則opencv41Libs對應的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庫

爲項目app的src/main目錄下創建一個jniLibs目錄(如果沒有的話)

 

將opencv 4.1.0 android sdk中的opencv-4.1.0-android-sdk\OpenCV-android-sdk\sdk\native\libs庫的所有架構文件複製到jniLibs目錄中

 

再到項目app模塊對應的build.gradle進行配置,增加jniLibs.srcDirs參數

sourceSets{
    main{
        jniLibs.srcDirs = ['src/main/jniLibs']
    }
}

以及配置支持的ndk類型,如下圖所示,把已知的架構包寫到app對應的build.gradle中

然後配置項目app的依賴項目,選擇“文件”-》“Project Structure”,然後設置app模塊的的依賴模塊,如下圖所示:

選擇“OK",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"
            }
        }
        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 項目。

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章