OpenCV3.2集成Android Studio2.2开发配置
主要知识点
- OpenCV4Android3.2 SDK介绍与下载
- AS2.2与OpenCV3.2集成
- 程序演示与代码
- AS集成OpenCV3.2配置常见错误
OpenCV4Android3.2 SDK介绍与下载
OpenCV是图像处理与机器学习的计算机视觉开源框架,其SDK支持Java、C++、Python、支持在Win系统、Android系统、苹果系统上开发编程。OpenCV3.2是OpenCV的最新Release,包含了大量的缺陷修正与新API使用,一个例子就是在二值化的时候OpenCV2.x对于自动阈值只有OTSU方法可选择,但是在OpenCV3.x中又多了一种自动阈值方法-三角阈值法。最新的OpenCV3.2 for Android SDK的下载地址如下: https://github.com/opencv/opencv/releases/tag/3.2.0
AS2.2与OpenCV3.2集成
- 打开Android Studio新建一个Android项目 从【File】->【New...】->【New Project...】开始,根据向导配置即可。
- 导入OpenCV Java SDK支持
【File】->【importmodule】->【选择路径】确定之后看到如下:
点击【Next】
点击【Finish】按钮即可结束导入模块OpenCV320库。
- 添加OpenCV3.2依赖
右键选择Android项目->【Open ModuleSettings】
点击右上角【+】
选择第三个【Module dependency】,导入opencv3.2依赖, 此刻打开build.gradle(app)可以看到依赖已经导入。
- 修改gradle script支持opencv相关so依赖导入
打开build.grale文件在修改添加如下的脚本:
程序演示与代码
环境配置好之后, 在MainActivity里面添加一个方法初始化方法,以便加OpenCV相关OS文件,代码实现如下:
private void iniLoadOpenCV() { boolean success = OpenCVLoader.initDebug(); if(success) { Log.i(CV_TAG, "OpenCV Libraries loaded..."); } else { Toast.makeText(this.getApplicationContext(), "WARNING: Could not load OpenCV Libraries!", Toast.LENGTH_LONG).show(); }}
成功加载之后,就可以加载资源文件名为test的图片,加载成功显示如下:
然后就可以加载图像资源文件为Bitmap对象,转换为灰度,代码实现如下:
// 获取资源文件对应的图像文件Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.test);// 传给灰度转换方法private void convertGray(Bitmap bitmap) { Mat src = new Mat(); Mat dst = new Mat(); Utils.bitmapToMat(bitmap, src); Imgproc.cvtColor(src, dst, Imgproc.COLOR_BGR2GRAY); Utils.matToBitmap(dst, bitmap); src.release(); dst.release();}
效果显示如下:
AS集成OpenCV3.2配置常见错误
第一次运行的时候很多人就会得到这样错误,开玩笑,你没有遇到!可能是你很有预见性的重新build整个项目,恭喜你!
需要rebuild整个app项目,首先要【build】->【clean build】做完之后再选择【build】->【rebuild】,然后就可以真机运行,从此开始你的人工智能学习之旅啦!
- 15.4 xshell使用xftp传输文件
- JDK容器学习之ArrayList:底层存储和动态扩容
- Linux基础(day57)
- 15.2/15.3 使用vsftpd搭建ftp
- JDK容器学习之Map: HashMap,TreeMap,LinkedHashMap对比小结
- 14.4 exportfs命令
- 不用那么多,每天一点点,学习React,贵在持之以恒
- Linux基础(day56)
- android classloader双亲委托模式
- 14.3 NFS配置选项
- 14.2 NFS服务端安装配置
- React Native组件之Button
- JDK容器学习之TreeMap (二) : 使用说明
- 从React和angular看技术路线的分歧
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- BFE.dev前端刷题64 - Promise reject的时候自动retry
- 顺序消息管道《Message Pipe》v1.0.1版本发布
- Qt音视频开发23-通用视频控件
- 破解Mariadb5.5密码
- redis学习(七)
- 自己实现一个SAP WebClient UI Repository Information System
- ABAP,Java和JavaScript类的构造函数使用的一些陷阱
- Spring Security如何优雅的增加OAuth2协议授权模式
- 如何将自定义XML视图注入SAP Fiori Elements应用
- SAP UI5控件ID的生成逻辑原理解析
- 如何自定义SAP Spartacus店铺的界面颜色风格
- 如何自定义SAP Spartacus店铺的购物车图表css风格
- 数据库PostrageSQL-从源代码安装
- Django的中间件
- WPF 使用 Skia 绘制 WriteableBitmap 图片