【OpenCV for Android】Android Studio整合OpenCV

來源:互聯網
上載者:User

標籤:條件   www.   open   測試   height   esc   type   finish   ldd   

準備工作

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

【OpenCV for Android】Android Studio整合OpenCV

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.