准備工作
1.下載安裝Android Studio(過程略)。
2.下載Android OpenCV:https://opencv.org/releases.html,找到Android pack點擊下載。
下載后解壓得到如下文件,其中sdk文件夾就是Android studio集成OpenCV所需的文件。
集成步驟
1. 在Android studio中創建項目,並在file -> new -> import module中導入OpenCV模塊,如圖
在source directory中選擇剛才解壓OpenCV文件路徑-> sdk -> Java,如下,點擊finish按鈕即可。
可能出現如下錯誤:點擊藍色字體,安裝相關文件即可。
模塊導入成功后,項目文件夾會出現如下目錄:
2.添加依賴,點擊file -> project structure,點擊moudle下app,選擇dependencies,
選擇剛才下載的OpenCV庫,
添加成功后如下。
添加依賴后,我們就可以在項目中使用OpenCV API了,但是如果現在運行APP,會提示安裝OpenCV manager,表明此時OpenCV集成還未成功,因為自己的APP無法獨立安裝必須使用OpenCV manager這個APP才能運行,為了免去這個繁瑣條件,我們繼續執行下面的步驟。
修改build.gradle文件
1. 將OpenCVLibrary的build.gradle文件中的一些參數修改為與app的build.gradle文件中相同(紅框標出的部分為需要修改的部分):
點擊Sync按鈕,出現如下提示:
按提示注釋掉相應內容,
點擊Sync則顯示build成功。
2. 將解壓的OpenCV文件夾目錄下的sdk -> native -> libs中的文件全部拷到項目的lib目錄下,
3.在app的gradle文件中添加如下代碼:
build.gradle文件的全部代碼如下:
apply plugin: 'com.android.application' android { compileSdkVersion 28 defaultConfig { applicationId "com.example.white.opencvmyapplication" minSdkVersion 15 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" externalNativeBuild { cmake { cppFlags "" } } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation 'com.android.support:appcompat-v7:28.0.0-rc01' implementation 'com.android.support.constraint:constraint-layout:1.1.2' compile fileTree(dir:"$buildDir/native-libs",include:'native-libs.jar') //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(':openCVLibrary342') } task nativeLibsToJar(type: Jar, description: 'create a jar archive of the native libs') { destinationDir file("$buildDir/native-libs") baseName 'native-libs' from fileTree(dir: 'libs', include: '**/*.so') into 'lib/' } tasks.withType(JavaCompile) { compileTask -> compileTask.dependsOn(nativeLibsToJar) } } }
至此,OpenCV的配置就完成了,避免了NDK的繁瑣和依賴第三方APP OpenCV manager,但此配置方式OpenCV的加載必須通過靜態加載的方式。
測試
在mainactivity中添加如下代碼,運行APP,
package com.example.white.opencvmyapplication; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import org.opencv.android.OpenCVLoader; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main); System.out.println("loading"); initLoadOpenCVLibs(); } private void initLoadOpenCVLibs() { boolean success = OpenCVLoader.initDebug(); if (success) { System.out.println("loading success"); Log.d("test", "initLoadOpenCVLibs:OpenCV加載成功!"); } else { System.out.println("loading failed"); Log.d("test", "initLoadOpenCVLibs:OpenCV加載失敗!"); } } }
在控制台打印如下,則說明OpenCV集成成功。
轉載請注明出處:https://www.cnblogs.com/White-xzx/p/9563479.html