当前位置: 代码迷 >> Android >> 基于adt bundle for windows-的AndroidOpenCV装配文档说明
  详细解决方案

基于adt bundle for windows-的AndroidOpenCV装配文档说明

热度:227   发布时间:2016-04-28 05:52:13.0
基于adt bundle for windows-的AndroidOpenCV安装文档说明

基于adt bundle for windows-AndroidOpenCV安装文档说明

任薛纪

说明:本文档是基于快速搭建android开发平台adt bundle for windows软件的AndroidOpenCV运行环境搭建,主要参考OpenCV官方文档: http://docs.opencv.org/trunk/doc/tutorials/introduction/android_binary_package/android_dev_intro.html如手动安装eclipsesdkadtcdtandroid开发环境,请参考如上的官网文档官方文档提供了两种AndroidOpenCV的安装方法。

方法一:

下载Tegra Android Development Pack (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),否则会提示编译问题。SampleAndroid平台可以低一些。

4、如果出现编译问题,需要重复刷新,清理和编译。

 

方法二:

基础环境:

1、Jdk

2、Adt bundle for windows,该集成软件集成了eclipsesdkadtcdt等软件下载地址:http://developer.android.com/sdk/index.html

AndroidOpenCV需要的软件

1、android-ndk-r8d

2、OpenCV-2.4.3.2-android-sdk-tadp

环境配置步骤

1、解压android-ndk-r8dOpenCV-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软件,然后按照如下两步(45两步)来分别导入OpenCV LIbrarySamples。注意,尽量按照两步导入,否则可能会出现路径找不到问题。

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),否则会提示编译问题。

7AndroidOpenCV提供两种使用方法,一种为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++ buildBuilder SettingsBehavior进行设置。

 

 

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

 

 

最简单的Ndk单步调试

1、点击项目属性->C/C++ Build->Builder Settings->Build command,使用ndk-build编译时,加上如下参数NDK_DEBUG=1,之后生成so文件之外,还会生成gdbobserver,gdb.setup调式文件,如下图:


  2、在项目的Debug Configuration中选择Android Native Apllication,点击下方Debug,如下图:

 

新建AndroidOpenCV项目步骤

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}/platforms/android-9/arch-arm/usr/include

${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/include

${NDKROOT}/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/include

${ProjDirPath}/../../sdk/native/jni/include

 

由于我的版本是r8d的,所以选择第二种

${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

 

7、修改JNICALL导出函数,格式为:

JNIEXPORT void JNICALL Java_新建项目报名(“.”用”_”代替)_调用Class_FindFeatures(JNIEnv*, jobjectjlong addrGray, jlong addrRgba);

如:JNIEXPORT void JNICALL Java_com_example_testopencv_MainActivity_FindFeatures(JNIEnv*, jobjectjlong 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平台的版本,可能由于版本问题导致不提示任何错误,但只显示错误。

    

  相关解决方案