这几天要在Android平台上实现OpenCv相关的功能,看了几个博客、论文,终于实现了Android上OpenCv开发的一个简单例子。期间遇到了不少大大小小的问题,现总结一下。当然还有很多问题我自己也不是很明白,希望大家不吝赐教。
一、准备工作
1.Windows平台下搭建好Android开发环境
这里特别提一下Android SDK环境变量的配置(之前做android开发并没有配置SDK环境变量衰,感觉自己好弱啊)
1.1 和配置Jdk环境变量类似,打开 计算机->属性->高级系统设置->高级->环境变量,在系统环境变量栏目下新建变量"ANDROID_SDK_HOME",并设置变量值为adt-bundle-windows目录下sdk目录的路径,我的是E:\adt-bundle-windows-x86_64_20140101\sdk
1.2 在path中添加"%ANDROID_SDK_HOME%\tools;%ANDROID_SDK_HOME%\platform-tools".注意分号分隔
1.3 检查SDK是否配置成功,cmd命令行输入android –h,出现如下结果,表明配置成功
2.Android NDk的安装与配置
下载地址:https://developer.android.com/tools/sdk/ndk/index.html
使用最新ndk,直接抛弃cygwin(貌似版本在r7以上),以前做Android的项目要用到NDK就必须要下载NDK,下载安装Cygwin(模拟Linux环境用的),下载CDT(Eclipse C/C++开发插件),还要配置编译器,环境变量,特别麻烦,新版就不需要了。
如下图是我下载的NDK版本参数
双击该.exe 文件,运行会提示选择解压目录,可以任意解压到某一目录,我选择解压到了E盘根目录下。
在eclipse中,选择windows->Preference->Android->NDK,然后添加刚才解压的NDK目录的路径,如下图所示
3. 配置OpenCv for android环境
下载地址:http://sourceforge.net/projects/opencvlibrary/files/opencv-android/(我下载的是OpenCV-2.4.9-android-sdk.rar)
解压该文件。将解压后的目录下的sdk改名为:OpenCVSdk(可以随意,也可以不改,方便就好)。
打开eclipse,选择FIle->import,选择Existing project into workspace……导入该sdk工程。该工程师在我们做OpenCv开发时要引用的第三方类库,所以我们要设置其属性:
这种情况下,我们就可以直接调用android为我们封装好的openCv接口进行开发。
二、NDK开发的实例,参照网上资料学习的第一个入门工程。
新建android工程,命名为TestOpenCv。
1.新建用于创建本地函数调用的类ImageProc.java
1 package my.example.ndkopencv; 2 3 public class ImageProc { 4 public static native int[] grayProc(int[] pixels, int w, int h); 5 }
2.生成c++头文件
打开cmd,进入工程所在的目录下的bin/classes目录下,执行com.example.testopencv.ImageProc命令:
此时,在D:\WorkSpace\TestOpenCv\bin\classes目录下生成com_example_testopencv_ImageProc.h文件,将该文件重命名为ImageProc.h。
3.生成本地jni引用
项目右键,选择Android Tools->Add Native Support