AndroidStudio3.3+OpenCV开发环境搭建
创建一个Android Studio普通项目
导入module
选择 File → New → Import Module
选择解压好的opencv-android-sdk下的sdk下的java,点OK
然后选择 Next , Finish
依赖Module
依照下面步骤添加module依赖

添加JNI依赖库
在app的main下面创建一个jniLibs文件夹,将sdk的native下的libs下的东西全部拷贝进去
或者放到app下的libs里

修改gradle配置文件
添加以下内容:
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)
}
然后再项目以来里再加一句:
implementation fileTree(dir: "$buildDir/native-libs", include: 'native-libs.jar')

代码测试
先拉一个按钮和一个ImageView上去

测试代码:
package com.wby.opencvdemo;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import org.opencv.android.OpenCVLoader;
import org.opencv.android.Utils;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.imgproc.Imgproc;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
staticLoadCVLibraries();
Button gray_btn = findViewById(R.id.gray_btn);
// 点击按钮,将图片转换为灰度图
gray_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
convert2Gray();
}
});
}
// OpenCV库静态加载及初始化
private void staticLoadCVLibraries() {
boolean load = OpenCVLoader.initDebug();
if(load) {
Log.i("CV", "Open CV Libraries loaded !");
}
}
public void convert2Gray() {
Mat src = new Mat();
Mat temp = new Mat();
Mat dst = new Mat();
// 读取图像
Bitmap image = BitmapFactory.decodeResource(this.getResources(), R.drawable.lena);
// 将c++的mat对象转换为android的bitmap对象
Utils.bitmapToMat(image, src);
// 因为安卓一般是RGB色彩空间,而opencv一般是bgr色彩空间,所以这里做一个转换
Imgproc.cvtColor(src, temp, Imgproc.COLOR_RGB2BGR);
Log.i("CV", "image type: " + (temp.type() == CvType.CV_8UC3));
// 再次转换为灰度色彩空间
Imgproc.cvtColor(temp, dst, Imgproc.COLOR_BGR2GRAY);
// 将转换结果变为bitmap类型
Utils.matToBitmap(dst, image);
ImageView imageView = findViewById(R.id.imageView);
// 设置ImageView的图像为转换完的灰度图像
imageView.setImageBitmap(image);
// 释放
src.release();
temp.release();
dst.release();
}
}
AndroidStudio3.3+OpenCV开发环境搭建的更多相关文章
- win10 + VS2010 + OpenCV2.4.10重编译OpenCV开发环境搭建
win10 + VS2010 + OpenCV2.4.10重编译OpenCV开发环境搭建 重编译的优点:能够调试的时候看OpenCV的源码. 重编译要得到的东西:Debug版本号和Release版本号 ...
- IntelliJ OpenCV 开发环境搭建
Windows下的IntelliJ + OpenCV开发环境搭建 基于IntelliJ IDEA 15 和 OpenCV 3.1.0 1. 在OpenCV官网下载OpenCV安装程序,双击解压到目标目 ...
- Zynq7000开发系列-5(OpenCV开发环境搭建:Ubuntu、Zynq)
操作系统:Ubuntu14.04.5 LTS 64bit OpenCV:OpenCV 3.1.0.opencv_contrib gcc:gcc version 4.8.4 (Ubuntu 4.8.4- ...
- Mac平台下Opencv开发环境搭建
OpenCV(Open Source Computer Vision Library),是一个开源的跨平台的计算机视觉库,它实现了图像处理和计算机视觉领域的很多通用算法,可以在多种计算机平台上运行,支 ...
- 基于vs2012的opencv开发环境搭建
前些日子有个需求,大概描述,实时检测一副动态图每一帧画面上全部的圆形内容,并得到全部圆形的圆心相对坐标以及半径.当时的思路是用Matlab写一个相关图像处理的插件,然后给C#调用.当时没立马动手的原因 ...
- 计算机视觉之《OpenCV开发环境搭建》
codeblock安装:http://blog.csdn.net/hitwengqi/article/details/7985343 ubuntu+codeblock+opencv:http://bl ...
- Mac平台上OpenCV开发环境搭建
转载于:https://segmentfault.com/a/1190000000711132 linux 编译指定库.头文件的路径问题 http://blog.csdn.net/jiaweizou/ ...
- OpenCV开发环境搭建-并测试一个图像灰度处理程序
转载地址:http://blog.csdn.net/sjz_iron/article/details/8614070
- OpenCV学习系列(零) Mac下OpenCV + xcode环境搭建
# OpenCV学习系列(零) Mac下OpenCV + xcode环境搭建 [-= 博客目录 =-] 1-学习目标 1.1-本章介绍 1.2-实践内容 1.3-相关说明 2-学习过程 2.1-hom ...
随机推荐
- 记录 Docker 的学习过程 (网络篇)
打开2个会话,分别运行以下命令 # docker run -it -P --name nginx2 nginx #-P 端口随机映射 再打开一个会话查看 运行中的容器 # docker ps -aCO ...
- Java基本语法--程序流程控制
流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块.流程控制方式采用结构化程序设计中规定的三种基本流程结构,即:顺序结构.分支结构.循环结构.本篇博客主要是对 ...
- 502. IPO(最小堆+最大堆法 or 排序法)
题目: 链接:https://leetcode-cn.com/problems/ipo/submissions/ 假设 力扣(LeetCode)即将开始其 IPO.为了以更高的价格将股票卖给风险投资公 ...
- python面试的100题(21)
正则表达式 94.请写出一段代码用正则匹配出ip? ip地址的生成规则. IP地址,是由32位数字二进制转为四个十进制的字符串组成. 怎么转化?下面讲解: 二进制:111111111111111111 ...
- 模块一:shell 脚本基础
一.shell脚本介绍 (一)脚本案例及介绍: #!/bin/bash LOG_DIR=/var/log ROOT_UID=0 if ["$UID -ne "$ROOT_UID&q ...
- Joining Data with dplyr in R
目录 inner_join Joining three tables left_join right-join full_join semi- and anti-join Stack Overflow ...
- 巨杉Tech | 使用 SequoiaDB + Docker + Nodejs 搭建 Web 服务器
容器化技术的出现大大简化了应用开发人员在构建底层基础设施的工作.SequoiaDB 巨杉数据库于3.2.1版本正式推出了 Docker 容器化部署方案,本文将会基于 SequoiaDB 巨杉数据库与N ...
- Outlook365(Oulook2016 或2013) 写邮件输入收件人时的推荐联系人如何清理?
· 在Outlook365(Oulook2016 或2013) 中写邮件,输入收件人邮箱地址时,会出现“最近联系人” “其他建议”等推荐的联系人,可以方便选择.如果里面有很多邮箱地址的已经无效的话, ...
- Day1 工厂模式
我的理解就是:工厂模式可以不用在乎参数的类型,工厂函数根据不同的类型,创建不同的对象.如下(简单工厂): package method.simpleFactory; import java.util. ...
- [HAOI2016] 找相同字符 - 后缀数组,单调栈
[HAOI2016] 找相同字符 Description 给定两个字符串,求出在两个字符串中各取出一个子串使得这两个子串相同的方案数.两个方案不同当且仅当这两个子串中有一个位置不同. \(n,m \l ...