基于adt bundle for windows-的androidopencv安装文档说明
任薛纪
说明:本文档是基于快速搭建android开发平台adt bundle for windows软件的androidopencv运行环境搭建,主要参考opencv官方文档: ,如手动安装eclipse、sdk、adt、cdt等android开发环境,请参考如上的官网文档。官方文档提供了两种androidopencv的安装方法。
下载 (tadp)集成软件包,运行tadp软件包将会在线下载所有的软件包,然后自动安装和配置运行环境(环境变量)。当安装完后,打开eclipse软件,然后按照如下两步来分别导入opencv library和samples。注意,尽量按照两步导入,否则可能会出现路径找不到问题。
1、import->general->existing project into workspace->next->browse-> x:\android\opencv-2.4.3.2-android-sdk-tadp(androidopencv根目录),仅选择opencv library,不选择copy projects into workspace.
)
2、import->general->existing project into workspace->next->browse-> x:\android\opencv-2.4.3.2-android-sdk-tadp(androidopencv根目录),选择除opencv library的所有samples,不选择copy projects into workspace.
3、为每一个项目选择android平台,选择项目,点击属性,定位android,从中选择一个android平台。注意:对于opencv2.4.3,项目opencv library的最低平台为android 4.2(即api level 17),否则会提示编译问题。sample的android平台可以低一些。
4、如果出现编译问题,需要重复刷新,清理和编译。
1、jdk
2、adt bundle for windows,该集成软件集成了eclipse、sdk、adt、cdt等软件下载地址:
androidopencv需要的软件
1、android-ndk-r8d
2、opencv-2.4.3.2-android-sdk-tadp
1、解压android-ndk-r8d和opencv-2.4.3.2-android-sdk-tadp
2、为ndk添加环境变量android_ndk_root=x:\android\android-ndk-r8d。(my computer -> properties -> advanced -> environment variables)
3、打开eclipse软件,然后按照如下两步(4和5两步)来分别导入opencv library和samples。注意,尽量按照两步导入,否则可能会出现路径找不到问题。
4、import->general->existing project into workspace->next->browse-> x:\android\opencv-2.4.3.2-android-sdk-tadp(androidopencv根目录),仅选择opencv library,不选择copy projects into workspace.
5、import->general->existing project into workspace->next->browse-> x:\android\opencv-2.4.3.2-android-sdk-tadp(androidopencv根目录),选择除opencv library的所有samples,不选择copy projects into workspace.
6、为opencv library项目选择android平台,选择项目,点击属性,定位android,从中选择一个android平台。注意:对于opencv2.4.3,项目opencv library的最低平台为android 4.2(即api level 17),否则会提示编译问题。
7、androidopencv提供两种使用方法,一种为java opencv,另一种为native opencv。
7.1 对应java opencv,不使用ndk。只要保证选择android平台和opencv库,就可以运行。
注意,如果opencv library编译没有正常编译,则samples会出现感叹号“!”,由于没有找到opencv的依赖库opencv library-2.4.3.jar。
7.2 对应native opencv,首先应该保证7.1能够正常通过,然后还需配置ndk,编译c/c++语言。需要对c/c++ build的builder settings和behavior进行设置。
8、对jni的编辑,如果打开jni里面的c/c++程序,将会提示很多错误,而且再也不能够运行该项目了。如下图
10、为了解决此问题,需要指明c/c++基本库的位置和opencv的位置,如下图所示,注意的是,可能ndk的环境变量的名称不一样,所以要根据环境变量的名称来替换android_ndk_root,特别注意的是,opencv的路径按照官方文档来做可能不能够作用,如果不行,直接按照计算机路径添加opencv的路径。
配置条目如下:
${android_ndk_root}/platforms/android-9/arch-arm/usr/include
${android_ndk_root}/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include
${android_ndk_root}/sources/cxx-stl/gnu-libstdc++/4.6/include
d:\android\opencv-2.4.3.2-android-sdk-tadp\sdk\native\jni\include
11、要运行androidopencv还需要在手机设备上安装opencv_2.4.2_binary_pack_tegra3.apk和opencv_2.4.2_manager.apk
安装如下:
adb install <path to tadp directory>
/opencv-2.4.2-tegra-sdk/apk/opencv_2.4.2_binary_pack_tegra3.apk
1、点击项目属性->c/c++ build->builder settings->build command,使用ndk-build编译时,加上如下参数ndk_debug=1,之后生成so文件之外,还会生成gdbobserver,gdb.setup调式文件,如下图:
2、在项目的debug configuration中选择android native apllication,点击下方debug,如下图:
1、建立一个名为testopencv的android项目,项目的位置和androidopencv在同一个盘符,否则这项目不能够添加opencv library,如下图所示:
2、将testopencv项目转化为c/c++项目
3、继续下一步,注意其中的后两部,为的时候自己配置ndk编辑c/c++程序
4、新建jni文件夹,将opencv tutorial 4 - mix java+native opencv里面jni下面的文件拷贝到新建的文件夹中。
5、添加opencv library(如果新建的项目的盘符不在opencv所在的盘符,需要拷贝新建项目到androidopencv的盘符,否则不能够添加opencv library)。
6、打开jni_part.cpp文件,添加c/c++库和opencv库,消除编译错误,如下图,其中内容如下。需要注意的是,官方文档有说明如下:
# for ndk r8 and prior:
${ndkroot}/platforms/android-9/arch-arm/usr/include
${ndkroot}/sources/cxx-stl/gnu-libstdc++/include
${ndkroot}/sources/cxx-stl/gnu-libstdc++/libs/armeabi-v7a/include
${projdirpath}/../../sdk/native/jni/include
# for ndk r8b and later:
${ndkroot}/sources/cxx-stl/gnu-libstdc++/4.6/include
${ndkroot}/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include
由于我的版本是r8d的,所以选择第二种
7、修改jnicall导出函数,格式为:
jniexport void jnicall java_新建项目报名(“.”用”_”代替)_调用class名_findfeatures(jnienv*, jobject, jlong addrgray, jlong addrrgba);
如:jniexport void jnicall java_com_example_testopencv_mainactivity_findfeatures(jnienv*, jobject, jlong addrgray, jlong addrrgba);
8、将opencv tutorial 3 - add native opencv项目里面的sample3native.java文件内容拷贝到mainactivity.java,同时去掉错误。
9、修改system.loadlibrary("mixed_sample");
10、将opencv tutorial 3 - add native opencv项目里面的tutorial3_surface_view.xml文件复制到新建项目对应的layout文件夹中
11、配置ndk,如下两图
13、修改android.mk文件,修改引入opencv library的路径
include ../sdk/native/jni/opencv.mk
14、修改androidmanifest.xml文件,添加如下权限
<uses-permission android:name="android.permission.camera"/>
<uses-feature android:name="android.hardware.camera" android:required="false"/>
<uses-feature android:name="android.hardware.camera.autofocus" android:required="false"/>
<uses-feature android:name="android.hardware.camera.front" android:required="false"/>
<uses-feature android:name="android.hardware.camera.front.autofocus" android:required="false"/>
15、注意android平台的版本,可能由于版本问题导致不提示任何错误,但只显示错误。