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下執行上面程式碼,
如果真機上出現下面介面即表示配置成功。