OpenCV中文网站

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 安装 配置
查看: 2151|回复: 4

Opencv4Android分享:eclipse下opencv环境搭建

[复制链接]
发表于 2016-6-18 20:35:11 | 显示全部楼层 |阅读模式
本帖最后由 mumumusuc 于 2016-6-19 17:22 编辑

题外话:没想到国内opencv论坛这么冷清啊。。

这篇文章的起因是楼主在实际工程开发中的经验总结,在这里做个记录。第一篇当然就是开发环境的搭建啦~

一.下载opencv4android
首先去opencv官网下载最新的OpenCVO4Android,最新的androidSDK有3.1和2.4.11,楼主这里下的是2.4.11版。
下载完毕,解压后就可以食用了(误)。C:\Users\leonardo\Desktop\an_28dav-1929photoshopthighhighszettai_ryouiki.png里面有4个文件夹: 1.bmp
/apk    放的是android上的OpenCV_Manager,我开发中不用这个。

  1. armeabi-v7a (ARMv7-A + NEON) |    >= 2.3    | OpenCV_2.4.9_Manager_2.18_armv7a-neon.apk
  2. armeabi-v7a (ARMv7-A + NEON) |     = 2.2    | OpenCV_2.4.9_Manager_2.18_armv7a-neon-android8.apk
  3. armeabi (ARMv5, ARMv6)       |    >= 2.3    | OpenCV_2.4.9_Manager_2.18_armeabi.apk
  4. Intel x86                    |    >= 2.3    | OpenCV_2.4.9_Manager_2.18_x86.apk
  5. MIPS                         |    >= 2.3    | OpenCV_2.4.9_Manager_2.18_mips.apk
复制代码
/doc    放的是官方指导和说明文档
/sample    官方演示程序源码
/sdk    android开发中要用的东西都在这

二.在eclipse中添加OpenCV
在eclipse中选择导入“Existing Android Code Into Workspace”,导入路径/sdk/java/OpenCV Library - 2.4.11。导入完成后alt+enter进入项目属性设置界面-Android,下方的Libaray中勾选“Is Library”。应用确定以后,这个项目就可以作为lib导入到其他项目了。
1.bmp
先不急着下一步,来看看SDK里提供了什么。
1.bmp
opencv官方对C/C++源码进行了java封装,src/目录下有最基本的api,简单介绍一下。
    org.opencv.core    这个包里是opencv核心的数据结构和数据类型,Mat,Scalar,Point,Size都在其中。值得一提的是Core类中封装了opencv中“cv_”开头常量,不过现在它们大都都不已“cv_”开头了。Core类中还有所有绘图api,如circle、putText等等。
    org.opencv.highgui    还在找imread和imwrite在哪?嗯,他们都在这里。
    org.opencv.imgproc    所有的图片处理算法都在这。
    org.opencv.features2d    opencv看家的2d图形特色处理算法。
    org.opencv.utils    原装没有但存在感爆棚的转换工具,起到android和opencv数据类型转换的api。


三.使用OpenCV作为lib使用
这一步比较难讲清,现在又发不了图片,先简单介绍一下,之后再补全。
之前说过楼主抛弃了OpenCV_Manager.apk这个累赘,这里推荐java+jni/NDK的开发方式。
OpenCV将c/c++封装成java后调用十分方便,比如很常用的灰度化:
  1. public static void cvtColor(Mat src, Mat dst, int code);
复制代码
  1. Imgproc.cvtColor(src,dst,Imgproc.COLOR_RGBA2GRAY);
复制代码


怎么实现的呢?用脚趾头想都知道一定是JNI。
  1. public static void cvtColor(Mat src, Mat dst, int code){
  2.       cvtColor_1(src.nativeObj, dst.nativeObj, code);
  3.       return;
  4.     }
复制代码
关于opencv和android之间的jni写法,之后再细说吧。
回到正题,我在开发中会直接调用封装好的java_api,这样可以保证代码书写效率,java_api中又是jni调用已有的c/c++代码,所以效率完全不用担心;对于自定义功能直接用native方法,java对于OpenCV中Mat的操作效率简直太捉急了(大概5倍之多,在相机中就是30fps和6fps的差距)。
具体怎么操作呢?下回写个OpenCVDemo.apk细说一下好了(懒)。

题外话:嗯,离发图片还差10积分,能发图片之后来补完一下这个帖子,还望大家多多支持~

回复

使用道具 举报

 楼主| 发表于 2016-6-19 17:23:01 | 显示全部楼层
补上了些图片
回复 支持 反对

使用道具 举报

发表于 2016-6-23 11:13:58 | 显示全部楼层
谢谢!期待你的新作
回复 支持 反对

使用道具 举报

发表于 2016-6-24 11:15:09 | 显示全部楼层
学习了,谢谢
回复 支持 反对

使用道具 举报

发表于 2016-8-23 10:07:41 | 显示全部楼层
膜拜大神ing……
问一下为什么前辈不用Android Studio呢?毕竟版本都到2.1了,似乎对NDK支持什么的更好。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|OpenCV中文网站  

GMT+8, 2019-9-16 10:45 , Processed in 0.053492 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表