Android studio 2.3.3配置OpenCV 3.4.2

Android studio2.3.3配置OpenCV 3.4.2,這裏就將自己踩過的坑碼下來共免。

首先我的Android studio版本是2.3.3,OpenCV可以去官網上下載相應的Androidsdk版:

                                                                 https://opencv.org/releases.html。

這裏我選擇的是opencv-3.4.2-android-sdk.zip。如下圖所示(最後一個),

       解壓後,接下來我們打開Android studio,然後新建一個項目 opencv_exam。

後續步驟如下圖所示:

(1)file->new->import module

然後進入到這個界面,選擇剛纔解壓的OpenCV路徑,如下圖所示(換成自己解壓的路徑):

 

   直接next,然後默認,點擊finish完成即可。

完成後我們需要做的就是將OpenCV導入到項目中:

然後選擇OpenCV,點擊OK即完成。

接下來把opencv-3.4.2-android-sdk\OpenCV-android-sdk\sdk\native\libs目錄下的庫複製到我們的project的app\libs目錄下,具體如圖所示:

這裏是存放CPU架構相關的庫,可以根據自己的CPU架構賦值,我這裏賦值的是所有的。

接下來將OpenCV的build.gradle裏的內容改成和我們的app裏(build.gradle)的一致就好了(主要是sdk版本問題),如下圖所示:

 

同時在module:app的build.gradle添加下面代碼(標紅的代碼):

android {
    compileSdkVersion 26
    buildToolsVersion "27.0.3"
    defaultConfig {
        applicationId "com.example.opencv_exam"
        minSdkVersion 23
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

        //////////////////////////////////////以下爲添加的
        multiDexEnabled true
        ndk{
            abiFilters 'armeabi-v8a','armeabi','armeabi-v7a',"x86"
        }
        jackOptions {
            enabled true
        }

        //////////////////////////////////////以s上爲添加的

}
 //////////////////////////////////////以下爲添加的

sourceSets {
    main {
        jni.srcDirs = []
        jniLibs.srcDirs = ['libs']
    }
}

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}


 //////////////////////////////////////以上爲添加的

等同步更新完,正常情況下會顯示successful。

(2)接下來我們來測試下

在src的drawable下放入你要測試的圖片,然後再Java下的Java文件下輸入以下代碼:

代碼:

package com.example.opencv_exam;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.ImageView;

import org.opencv.android.OpenCVLoader;
import org.opencv.android.Utils;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.imgproc.Imgproc;

public class MainActivity extends AppCompatActivity
{
    static {
        if(!OpenCVLoader.initDebug())
        {
            Log.d("opencv","初始化失敗");
        }
    }
    private ImageView imageView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView = (ImageView)findViewById(R.id.image);
        Bitmap bitmap = BitmapFactory.decodeResource(this.getApplicationContext().getResources(), R.drawable.test);
        Mat src = new Mat();
        Mat dst = new Mat();
        Utils.bitmapToMat(bitmap, src);
        //new Size(width, height)
        Imgproc.resize(src, dst, new Size(400,600),0,0,Imgproc.INTER_AREA);
        Bitmap bitmap1 = Bitmap.createBitmap(dst.cols(),dst.rows(),Bitmap.Config.RGB_565);
        Utils.matToBitmap(dst, bitmap1);
        imageView.setImageBitmap(bitmap1);
    }
}

然後接上真機測試一下,真機上要想運行OpenCV需要將我們下載的OpenCV的AndroidSDK裏的OpenCV_3.4.2_Manager_3.42_armeabi.apk先安裝到手機上(這個根據自己手機Android版本選)。

在Android studio下運行上面代碼,

如果真機上出現下面界面即表示配置成功。

 

 

 

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