OpenCV AndroidStudio 环境搭建
1、SDK下载:
2、新建AndroidStudio工程
新建android 工程将opencv-3.2.0-android-sdk\OpenCV-android-sdk\sdk\native\libs 对应目录下面的每一个平台对应 的 libopencv_java3.so 拷贝到 app\libs对应平台的目录下。
3、构建 opencv 在androidStudio 下的module文件
因为我们下载下来的sdk是eclipse工程格式,我们需要手动的改为android Studio 的插件形式。
- 新建openCVLibrary320 文件夹,然后再内部创建如下 \openCVLibrary320\src\main\java 把org copy放在这里。
- 创建\openCVLibrary320\src\main\ 下面copy res 文件。
- AndroidManifest.xml 放在main 文件夹下。 并删掉“<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="21" />”
- 还差一个build.gradle ,在工程中随便建立一个model.
5. 把它的 build.gradle 和 proguard-rules.pro copy 到 src 下,下载的 lint.xml 也copy 到src。
6. 然后把这个文件夹放在 工程的根目录下为位一个插件。
4、在工程中添加这个模块
- 在工程的setting.gradle 下增加 include ':openCVLibrary320'
- 在app 目录下 build.gradle dependencies 里增加
implementation project(path: ':openCVLibrary320')
3、android 里增加
sourceSets {
main {
jniLibs.srcDir 'libs'
jni.srcDirs = [] //disable automatic ndk-build
}
}
4、重新build 一下工程。出了这个错误。
不认识这个aidl。下面这么搞:在main 下建aidl 文件夹
把这个AIDL文件删掉。把org\opencv\engine 直接拖进来。
在build 下。
就OK 了。没错误。可以试着使用一下。
5 、demo 代码
package com.zx.opencv;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
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.imgproc.Imgproc;
public class MainActivity extends AppCompatActivity {
private ImageView imageView;
private Bitmap orgBitmap;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
iniLoadOpenCV();
imageView = findViewById(R.id.imageView);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(getResources(),R.drawable.aa);
int w = options.outWidth;
int h = options.outHeight;
int inSample = 1;
if (w > 1000 || h > 1000) {
while (Math.max(w / inSample, h / inSample) > 1000) {
inSample *= 2;
}
}
options.inJustDecodeBounds = false;
options.inSampleSize = inSample;
options.inPreferredConfig = Bitmap.Config.ARGB_8888;
orgBitmap = BitmapFactory.decodeResource(getResources(),R.drawable.aa,options);
Mat src = new Mat();
Utils.bitmapToMat(orgBitmap, src);
Mat gray = new Mat();
Imgproc.cvtColor(src, gray, Imgproc.COLOR_BGRA2GRAY);
Utils.matToBitmap(gray, orgBitmap);
imageView.setImageBitmap(orgBitmap);
gray.release();
src.release();
}
private void iniLoadOpenCV() {
boolean success = OpenCVLoader.initDebug();
//首先使用OpenCVLoader.initDebug()检查一下OpenCV库是否成功加载
if (success) {
Log.i("TAG"," openCV load 成功 ");
} else {
Log.i("TAG", "openCV load 失败 ");
}
}
}
6、使用openCV 灰化后的效果图