创建一个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开发环境搭建的更多相关文章

  1. win10 + VS2010 + OpenCV2.4.10重编译OpenCV开发环境搭建

    win10 + VS2010 + OpenCV2.4.10重编译OpenCV开发环境搭建 重编译的优点:能够调试的时候看OpenCV的源码. 重编译要得到的东西:Debug版本号和Release版本号 ...

  2. IntelliJ OpenCV 开发环境搭建

    Windows下的IntelliJ + OpenCV开发环境搭建 基于IntelliJ IDEA 15 和 OpenCV 3.1.0 1. 在OpenCV官网下载OpenCV安装程序,双击解压到目标目 ...

  3. 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- ...

  4. Mac平台下Opencv开发环境搭建

    OpenCV(Open Source Computer Vision Library),是一个开源的跨平台的计算机视觉库,它实现了图像处理和计算机视觉领域的很多通用算法,可以在多种计算机平台上运行,支 ...

  5. 基于vs2012的opencv开发环境搭建

    前些日子有个需求,大概描述,实时检测一副动态图每一帧画面上全部的圆形内容,并得到全部圆形的圆心相对坐标以及半径.当时的思路是用Matlab写一个相关图像处理的插件,然后给C#调用.当时没立马动手的原因 ...

  6. 计算机视觉之《OpenCV开发环境搭建》

    codeblock安装:http://blog.csdn.net/hitwengqi/article/details/7985343 ubuntu+codeblock+opencv:http://bl ...

  7. Mac平台上OpenCV开发环境搭建

    转载于:https://segmentfault.com/a/1190000000711132 linux 编译指定库.头文件的路径问题 http://blog.csdn.net/jiaweizou/ ...

  8. OpenCV开发环境搭建-并测试一个图像灰度处理程序

    转载地址:http://blog.csdn.net/sjz_iron/article/details/8614070

  9. OpenCV学习系列(零) Mac下OpenCV + xcode环境搭建

    # OpenCV学习系列(零) Mac下OpenCV + xcode环境搭建 [-= 博客目录 =-] 1-学习目标 1.1-本章介绍 1.2-实践内容 1.3-相关说明 2-学习过程 2.1-hom ...

随机推荐

  1. 自动生成admin(后台)

    public --->>>>index.php 入口文件如下: // +---------------------------------------------------- ...

  2. 【python&pycharm的安装使用】

    一.Python3.7安装 1. 运行python3.7.exe 2. 检查是否安装成功:命令窗口输入python -V 二.Pycharm安装 1. 运行pycharm.exe(社区版) 2. 配置 ...

  3. ubantu安装apache

    1.命令安装: sudo apt install apache2 2.检查是否启动了Apache服务 systemctl status apache2 3.开启.关闭和重启服务器 /etc/init. ...

  4. [CF235A] LCM Challenge - 贪心

    找到3个不超过n的正整数(可以相同),使得它们的lcm(最小公倍数)最大. Solution 可以做得很优雅吧,但我喜欢(只会)暴力一点 根据质数密度分布性质,最后所取的这三个数一定不会比 \(n\) ...

  5. 将字符串转换为double类型的list

    var data=“3.039,3.977,3.677,5.855,12.341,6.771”; 方法一: var result=datas.Split(',').ToList().ConvertAl ...

  6. 区间无修改莫队学习笔记(lg1494小z的袜子)

    这几天感觉要学的要做的有点多,就偷了个懒没写笔记,赶紧补一下 莫队嘛,一个离线处理各种区间(或树上)询问的神奇算法 简单而言,按左端点排个序然后指针l,r递推就好了 复杂度证明貌似是不待修改的n^1. ...

  7. SpringCloud Netflix Zuul

    网关的概念 服务A.B都是暴露出来,供外部直接调用的, 有时候需要对请求进行过滤.校验,比如检验用户是否已登陆,可以写在暴露出来的每个服务中,但要在多个服务中写相同的代码,太繁琐,可以提出来,放在网关 ...

  8. HTML的学习结构

    HTML的学习结构 HTML的背景 HTML的创建 HTML的网页基本结构 HTML的基本标签 HTML的图像标签 HTML的链接标签 HTML的列表标签和表格标签 HTML的媒体元素(视频+音频) ...

  9. sql 单表操作

    前戏 --创建表 create table xxx( id int unsigned not null auto_increment primary key, name varchar(20) not ...

  10. codeforces 1282B2. K for the Price of One (Hard Version) (dp)

    链接 https://codeforces.com/contest/1282/problem/B2 题意: 商店买东西,商店有n个物品,每个物品有自己的价格,商店有个优惠活动,当你买恰好k个东西时可以 ...