OpenCV3.4.1快速集成到Android studio中,10分钟搞定
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)中的值一样
compileSdkVersion
minSdkVersion
targetSdkVersion
5.复制armeabi-v7a文件夹到项目的libs目录下(注意要有文件夹)
复制成功后,也可以删除掉其他的.a文件,只保留libopencv_java3.so
6.添加依赖
dependencies {
...
//让app包,与新添加的这个OpenCV库关联
implementation project(':openCVLibrary341')
//将打好jar包,添加到依赖中
implementation fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar')
}
//以下很重要
//将添加的.so文件,打包成jar
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)
}
7.初始化,图像转成灰色测试
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
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 Button button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
//初始化
if (OpenCVLoader.initDebug()) {
Toast.makeText(this, "OpenCVLoader初始化成功", Toast.LENGTH_SHORT).show();
}
//测试灰度
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
convert2Grey();
}
});
}
private void convert2Grey() {
Mat src = new Mat();//Mat是OpenCV的一种图像格式
Mat temp = new Mat();
Mat dst = new Mat();
Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.mipmap.bd_logo1);
Utils.bitmapToMat(bitmap, src);
Imgproc.cvtColor(src, temp, Imgproc.COLOR_RGB2BGR);
Imgproc.cvtColor(temp, dst, Imgproc.COLOR_BGR2GRAY);
Utils.matToBitmap(dst, bitmap);
imageView.setImageBitmap(bitmap);
//
src.release();
temp.release();
dst.release();
}
private void initView() {
imageView = (ImageView) findViewById(R.id.imageView);
button = (Button) findViewById(R.id.button);
}
}
Demo下载
OpenCV3.4.1快速集成到Android studio中,10分钟搞定的更多相关文章
- 【转】让你10分钟搞定Mac--最简单快速的虚拟安装
文章出处:让你10分钟搞定Mac--最简单快速的虚拟安装http://bbs.itheima.com/thread-106643-1-1.html (出处: 黑马程序员训练营论坛) 首先说明一下. 第 ...
- OpenCV - Android Studio 中集成Opencv环境(不包含opencv_contrib部分)
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,支持的运行环境也是非常的多,这篇文章主要讲的是Android环境集成OpenCV(IDE是Android Studio,我想Eclip ...
- 如何在android studio中cordova的混合开发
基于Android Studio 中Cordova的开发 cordova简介 Cordova的前身是PhoneGap 官网: (http://cordova.io) Cordova应是运行在客户端本地 ...
- OpenCV - Android Studio 中集成Opencv环境(包含opencv_contrib部分)
我在上一篇博客中说到了在Android中集成OpenCV,但是那个版本的OpenCV是没有SIFT和SURF算法的,因为这些算法是受专利保护的,所以并没有被包含在预编译库中,所以如果想要使用SIFT和 ...
- 快速掌握 Android Studio 中 Gradle 的使用方法
快速掌握 Android Studio 中 Gradle 的使用方法 Gradle是可以用于Android开发的新一代的 Build System, 也是 Android Studio默认的build ...
- 在android studio中集成javah, ndk-build进行JNI开发
最近在搞一个android上控制LED灯闪烁的功能,用到了串口编程,搜索了一下,发现Google发布了一个demo,android-serialport-api.有现成的代码和APK,要想自己改JNI ...
- Android Studio中有用的快捷键栏
Android Studio中有用的快捷键栏#1 Ahraewi线移动 Alt + Shift +向上/向下❖Alt + Shift +向上/向下 或上下移动在所选位置的行. 删除行 CMD + B ...
- 在Android Studio中进行单元测试和UI测试
本篇教程翻译自Google I/O 2015中关于测试的codelab,掌握科学上网的同学请点击这里阅读:Unit and UI Testing in Android Studio.能力有限,如有翻译 ...
- Android Studio中的大量findViewById
一. 分析 在Android Studio中开发时,findViewById是用的最多的函数之一.经常需要对返回的view进行类型转换,输入麻烦.代码丑陋. 本文提供两种方案来解决这个问题: 1.安装 ...
随机推荐
- java中i=i++的问题
java中 i = i++ 的结果 昨天看到下面这段代码,分享出来给大家看看,大家也可以讨论讨论. int i = 0; i = i++; System.out.println("i的值是 ...
- 使用RevitNet操作多个版本的Revit
在Revit二次开发中,如果只是简单的从模型中提取数据或不需要界面对Revit进行修改,我们一般使用RevitNet. 如果对RevitNet不熟悉的,请参考:RevitAPI进阶之独立进程内读取.写 ...
- Computer Vision_33_SIFT:SAR-SIFT: A SIFT-LIKE ALGORITHM FOR SAR IMAGES——2015
此部分是计算机视觉部分,主要侧重在底层特征提取,视频分析,跟踪,目标检测和识别方面等方面.对于自己不太熟悉的领域比如摄像机标定和立体视觉,仅仅列出上google上引用次数比较多的文献.有一些刚刚出版的 ...
- centos下关闭自动锁屏
自己这段时间在学习Linux,选用的系统的为CentOS,在实际操作过程中遇到问题,在无任何操作情况下,系统过一段时间自动锁屏需要重新输入密码.经过多次尝试以后终于成功!解决方法如下: Setting ...
- .NET Framework 概述
文章标题:.NET Framework 概述 地址:https://docs.microsoft.com/zh-cn/dotnet/framework/get-started/overview NET ...
- JAVA遇见HTML——Servlet篇:应用MVC架构实现项目
java关键字“this”只能用在方法方法体内.当一个对象创建之后,java虚拟机就会给这个对象分配一个引用自身的指针,这个指针的名字就是this.只能在非静态方法中使用 package servle ...
- onbeforeunload、onpagehide、onunload、onload、onpageshow的正确执行顺序
一.Chrome支持onbeforeunload.onpagehide.onunload,只是在这些方法执行的时候alert,console这些方法已经被注销了. 二.浏览器跳转.关闭.刷新时都按a, ...
- api文档设计工具:RAML、Swagger
api文档设计工具是用来描述和辅助API开发的. 一.RAML https://raml.org/ https://wenku.baidu.com/view/9523238d5ef7ba0d4b733 ...
- ActiveMQ之JMS及保证消息的可靠性<持久化、事务、签收>(三)
1.JAVAEE 是一套使用Java 进行企业级开发的13 个核心规范工业标准 , 包括: JDBC 数据库连接 JNDI Java的命名和目录接口 EJB Enterprise java b ...
- Python+request 分模块存放接口,多接口共用参数URL、headers的抽离,添加日志打印等《三》
主要介绍内容如下: 1.分模块存放接口 2.多接口共用参数URL.headers的抽离为配置文件 3.添加日志打印 4.一个py文件运行所有所测的接口 如上介绍内容的作用: 1.分模块存放接口:方便多 ...