Android OpenCV 安装与配置+JNI开发

    首先要先安装JDK,下载地址http://www.oracle.com/technetwork/java/javase/downloads/index.html,安装完成后,需要配置系统环境变量(这里是我用的环境变量,请根据具体安装进行修改,对于已经存在的环境变量,在已有值上进行添加)

JAVA_HOME=D:\Program Files\Java\jdk1.7.0_45

Path=%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

CLASSPATH=.;%JAVA_HOME%\lib\tool.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib

    在Android的官网下载Android的sdk,下载地址http://developer.android.com/sdk/index.html(下图所示下载),这里便于开发者的使用,直接提供了Android开发IDE,这样开发者不用自己安装Eclipse和ADT了,在使用OpenCV时候,常需要调用C/C++代码,这样还要安装CDT,好在这里也集成了CDT。

    下载好了开发包,解压了就可以使用了,如有需要可以通过SDK Manager.exe进行更新即可。现在就可以开发普通的Android应用了。配置系统环境变量

ANDROID_SDK_HOME=D:\adt-bundle-windows-x86-20131030\sdk

%ANDROID_SDK_HOME%\tools;%ANDROID_SDK_HOME%\platform-tools;

    但是要进行OpenCV开发,还需要Android OpenCV库,下载地址http://opencv.org/,如果要调用C/C++代码还需要安装NDK,下载地址http://developer.android.com/tools/sdk/ndk/index.html,下载你需要的版本。解压备用。

    这样,准备工作已基本完成,现在打开解压Android SDK包中的eclipse.exe,先在就应该可以编写Android应用了,如果你没有可以运行的Android设备,可以创建一个安卓虚拟设备(AVD),Window-》Android Virtual Device Manager,点击右侧的New,即可新建AVD,如下图。如果有真实的Android设备最好。

    下一步配置NDK,Window-》Preference

    然后import Android OpenCV包,可以把OpenCV Library和一些sample import进来,然后编译一下,就可以运行例子看效果了。但前提是你要运行的设备上已经安装了OpenCV Manager,这个可以在Android OpenCV包的apk文件夹中找到。

    如果要自己开发Android OpenCV应用分两种情况,一种是基于Java开发,另一种是Java和C/C++混合开发。先说第一种。创建Android项目后右击项目选Properties,如下图。Add加入OpenCV Library。

    在继承Activity的activity类中加入

    private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
        @Override
        public void onManagerConnected(int status) {
            switch (status) {
                case LoaderCallbackInterface.SUCCESS:
                {
                    Log.i("ObjDetect/MainActivity", "OpenCV loaded successfully");
                } break;
                default:
                {
                    super.onManagerConnected(status);
                } break;
            }
        }
    };

    然后在onResume()中加入

    public void onResume()
    {
        super.onResume();
        OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_8, this, 
        		mLoaderCallback);
    }

    这样就可以正常使用Android OpenCV了。

    下面介绍另一种方法,就是通过JNI调用C/C++来使用OpenCV。这需要把要用的一些头文件包含到项目中,如下图所示


    接着要编写入口函数接口,public static native type funcName(type arg1,type arg2,...);这里不需要定义这个函数,其实现在C/C++中完成。注意native关键字是必须的,static不是必须的,但将该函数声明为静态的,不需要该类对象就可以调用此方法。右击该项目Android Tools-》Add Native Support,如下图,填写so包的名称(so包其实就是Java要调用的C/C++部分,这个名称就应该对应着你C/C++文件的名称)。

    之后你的工程目录就会多一个jni文件夹,此文件夹中会出现一个HelloWorld.cpp和Android.mk文件。然后就是生成cpp文件对应的头文件(这一步不是必须的,但这一步可以为您自动生成jnicall的函数头),先重新编译一下该项目,在命令窗口进入到项目所在目录下,

javah -classpath bin/classes -d jni *.*.*. ?Activity(前面的*.*.*代表包名,?Activity代表包含jni函数定义的activity名称),该命令执行后就会在jni文件夹下有多一个*_*_*_?Activity.h的头文件,头文件中有jnicall的函数头,例如JNIEXPORTjstring JNICALL Java_xj_example_jnitest_JavaSource_say
  (JNIEnv *, jobject);
将该函数头copy到之前生成的cpp文件中,同时要#include *_*_*_?Activity.h,然后将该函数实现,但这里需要一些类型的转换,可以注意到在Java中定义C/C++函数的返回值和参数类型前都多了一个'j'在函数体中要使用参数或返回函数值都需要做相应的转换,具体的这里不详细说明,用到什么再去网上找。函数实现后是希望在Java中可以调用该函数,需要在调用前先System.loadLibrary("CPPTest");将so包加载,然后再调用相应的函数即可。最后还要在jni文件夹下编写一个Application.mk文件,该文件一般固定,指定运行平台等。代码如下:

APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi
APP_PLATFORM := android-8

    一般不用修改,若想仔细研究请自己查阅相应项所代表的含义。最后再重新编译一下项目在libs文件夹下会多出来一个armeabi文件夹,其中会生成相应的.so文件,接着就可以运行看效果了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android平台上配置OpenCV和Qt开发环境是一个相对复杂的过程,下面是简要的步骤: 1. 下载OpenCV SDK和Qt开发工具包:首先,从OpenCV官方网站下载合适版本的OpenCV SDK。然后,从Qt官方网站下载适用于Android的Qt开发工具包。 2. 安装和配置Android SDK和NDK:确保已经正确安装和配置了Android SDK和NDK,因为Qt和OpenCVAndroid开发都依赖于这两个工具。 3. 创建一个Qt项目:使用Qt Creator创建一个新的Qt项目,并选择适用于Android的项目模板。 4. 配置Qt项目:在Qt项目的.pro文件中添加适当的OpenCV库依赖项,例如: ``` INCLUDEPATH += path_to_opencv_sdk/sdk/native/jni/include LIBS += -Lpath_to_opencv_sdk/sdk/native/libs/$(TARGET_ARCH_ABI) -lopencv_java4 ``` 这些路径和库的名称可能因您下载的OpenCV版本而异。 5. 配置项目的AndroidManifest.xml文件:在项目的AndroidManifest.xml文件中添加相应的权限和特性,以便允许应用程序访问相机等设备功能。 6. 编写Qt代码和OpenCV集成:在Qt项目的源文件中添加OpenCV的相关代码,并进行必要的配置和初始化,以便能够在Android设备上运行OpenCV功能。 7. 构建和部署项目:最后,通过Qt Creator构建和部署项目到Android设备,以进行测试和调试。 需要注意的是,这只是一个简要的概述,并且确切的步骤可能会因您使用的OpenCV版本和Qt版本而有所不同。因此,建议您参考相关的文档、教程和示例代码,以获得更详细和具体的配置说明。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值