OpenCV3.4.1快速集成到Android studio中,10分钟搞定
转载 https://blog.csdn.net/yu540135101/article/details/82593860
1.下载地址(官网)
https://www.opencv.org/opencv-3-4-1.html

2.导入Module


3.删除以下代码

在OpenCV模块的清单文件中删除以下代码
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="21" />
4.配置OpenCVLibrary341的SDK版本

在build.gradle(Module:OpenCVLibrary341)中,修改以下属性
改为和build.gradle(Module:app)中的值一样
1compileSdkVersion 2minSdkVersion 3targetSdkVersion
5.复制armeabi-v7a文件夹到项目的libs目录下(注意要有文件夹)
复制成功后,也可以删除掉其他的.a文件,只保留libopencv_java3.so

6.添加依赖
1dependencies { 2 ... 3 4 //让app包,与新添加的这个OpenCV库关联 5 implementation project(':openCVLibrary341') 6 //将打好jar包,添加到依赖中 7 implementation fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar') 8 } 9 10//以下很重要 11//将添加的.so文件,打包成jar 12task nativeLibsToJar(type: Jar, description: 'create a jar archive of the native libs') { 13 destinationDir file("$buildDir/native-libs") 14 baseName 'native-libs' 15 from fileTree(dir: 'libs', include: '**/*.so') 16 into 'lib/' 17} 18tasks.withType(JavaCompile) { 19 compileTask -> compileTask.dependsOn(nativeLibsToJar) 20}
7.初始化,图像转成灰色测试


1import android.graphics.Bitmap; 2import android.graphics.BitmapFactory; 3import android.os.Bundle; 4import android.support.v7.app.AppCompatActivity; 5import android.view.View; 6import android.widget.Button; 7import android.widget.ImageView; 8import android.widget.Toast; 9 10import org.opencv.android.OpenCVLoader; 11import org.opencv.android.Utils; 12import org.opencv.core.Mat; 13import org.opencv.imgproc.Imgproc; 14 15public class MainActivity extends AppCompatActivity { 16 17 private ImageView imageView; 18 private Button button; 19 20 @Override 21 protected void onCreate(Bundle savedInstanceState) { 22 super.onCreate(savedInstanceState); 23 setContentView(R.layout.activity_main); 24 initView(); 25 //初始化 26 if (OpenCVLoader.initDebug()) { 27 Toast.makeText(this, "OpenCVLoader初始化成功", Toast.LENGTH_SHORT).show(); 28 } 29 30 //测试灰度 31 button.setOnClickListener(new View.OnClickListener() { 32 @Override 33 public void onClick(View v) { 34 convert2Grey(); 35 } 36 }); 37 38 39 } 40 41 private void convert2Grey() { 42 Mat src = new Mat();//Mat是OpenCV的一种图像格式 43 Mat temp = new Mat(); 44 Mat dst = new Mat(); 45 Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.mipmap.bd_logo1); 46 Utils.bitmapToMat(bitmap, src); 47 Imgproc.cvtColor(src, temp, Imgproc.COLOR_RGB2BGR); 48 Imgproc.cvtColor(temp, dst, Imgproc.COLOR_BGR2GRAY); 49 Utils.matToBitmap(dst, bitmap); 50 imageView.setImageBitmap(bitmap); 51 // 52 src.release(); 53 temp.release(); 54 dst.release(); 55 } 56 57 private void initView() { 58 imageView = (ImageView) findViewById(R.id.imageView); 59 button = (Button) findViewById(R.id.button); 60 } 61}