创建一个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. hdu1005 矩阵快速幂

    #include<iostream> #include<cstdio> #include<cstring> #include<set> #include ...

  2. vue加载单文件使用vue-loader报错

    报错信息如下:ERROR in ./src/login.vue Module Error (from ./node_modules/vue-loader/lib/index.js): vue-load ...

  3. nginx反向代理https访问502, nginx反向代理, 支持SNI的https回源,SNI源点,nginx反向代理报错

    正常nginx配置了SSL是可以通过HTTPS访问后端的,但是对有配置SNI + https后端的支持有点麻烦. 编译安装nginx后,看一下是否支持SNI /usr/local/nginx/sbin ...

  4. Aspx Ajax 调用 C#函数处理数据

    jquery ajax 调用后台函数 var res; $.ajax({ type: "POST", url: "fast_index_overview.aspx/Get ...

  5. xss和sql注入学习1

    在本地搭建一个存在漏洞的网站,验证xss漏洞和SQL注入的利用方法. 使用phpStudy工具搭建一个美食CMS网站平台. 0x01  xss测试 打开调试模式,定位姓名栏输入框: 尝试在value中 ...

  6. AntDesign(React)学习-2 第一个页面

    1.前面创建了第一个项目jgdemo,结构如下,使用TypeScript. 2.yarn start启动项目 3.点击GettingStarted是umi的官方网站 https://umijs.org ...

  7. 一、c++语言基础

    1. 程序员的第一条代码"Hello,world!" #include <cstdio> //头文件,主要负责输入.输出 using namespace std;//C ...

  8. url跳转问题

    window.history.replaceState(null, null, "/callPlanning/1") //替换路径不刷新页面 window.location.rep ...

  9. R语言函数话学习笔记5

    使用Tidyverse完成函数化编程 (参考了家翔学长的笔记) 1.magrittr包的使用 里面有很多的管道函数,,可以减少代码开发时间,提高代码可读性和维护性 1.1 四种pipeline 1.1 ...

  10. C++-POJ2955-Brackets[DP]

    题意就是,找出最长合法子括号序列 容易想到设f[l][r]为l~r的最长合法子括号序列的长度 然后从短的状态往长的状态枚举,不断更新答案就可以了 //#include<bits/stdc++.h ...