【OpenCV for Android】Android Studio集成OpenCV


准備工作

1.下載安裝Android Studio(過程略)。

2.下載Android OpenCVhttps://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,點擊moudleapp,選擇dependencies

選擇剛才下載的OpenCV庫,

添加成功后如下。

添加依賴后,我們就可以在項目中使用OpenCV API了,但是如果現在運行APP,會提示安裝OpenCV manager,表明此時OpenCV集成還未成功,因為自己的APP無法獨立安裝必須使用OpenCV manager這個APP才能運行,為了免去這個繁瑣條件,我們繼續執行下面的步驟。

修改build.gradle文件

1. 將OpenCVLibrarybuild.gradle文件中的一些參數修改為與appbuild.gradle文件中相同(紅框標出的部分為需要修改的部分):

點擊Sync按鈕,出現如下提示:

按提示注釋掉相應內容,

點擊Sync則顯示build成功。

 2. 將解壓的OpenCV文件夾目錄下的sdk -> native -> libs中的文件全部拷到項目的lib目錄下,

 

3.在appgradle文件中添加如下代碼:

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM