如何使用NDK开发opencv ndroid平台应用

2024-10-12 06:44:55

1、首先搭建基于NDK的jni开发环境,再次不在累述,请参考另一篇经验。从官方下载OpenCV4Android SDK 3.0 开发包,并将该包解压。

2、解压opencv4android 包选择file->import->Android->Existing Android code into workplace

如何使用NDK开发opencv ndroid平台应用如何使用NDK开发opencv ndroid平台应用

3、浏览opencv 目录,导入所有工程,注意勾选“Copy projects into workspace”Copy openCV目录下SDK文件夹到工作区中

如何使用NDK开发opencv ndroid平台应用如何使用NDK开发opencv ndroid平台应用如何使用NDK开发opencv ndroid平台应用

4、修改工程Tutorial 1 ->user SDK版本, 根据测试手机设置此版本,设置>=11即可

如何使用NDK开发opencv ndroid平台应用

5、设置tutrorial 1 工程文件属性,加入opencv library

如何使用NDK开发opencv ndroid平台应用如何使用NDK开发opencv ndroid平台应用

6、编译并运行apk, 手机能运行程序,但是会报package not found,这是因为程序依赖的文件没有安装,类似windows平台下找不到dll文件一样,这些依赖包在opencv目录apk目录下,安装对应平台的apk即可,但是这样动态链接给安装带来不便,以下介绍静态链接,把所需文件打包在一起。幸运的是,这一步在oepncv 目录下产生库文件opencv library - 3.0.0.jar

如何使用NDK开发opencv ndroid平台应用如何使用NDK开发opencv ndroid平台应用

7、设置工程属性,Java build path->Libraries->Add jars,执行了这一步操作,工程文件中会出现opencv library

如何使用NDK开发opencv ndroid平台应用如何使用NDK开发opencv ndroid平台应用

8、修改AndroidMainifest.xml文件,加入<uses-permission android多唉捋胝:name="android.permission.CAMERA"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-feature android:name="android.hardware.camera" /><uses-feature android:name="android.hardware.camera.autofocus" />这里是设置应用程序的权限,接下来因为涉及文件操作,设置存储器访问权限,如要设置camera,可按照上述设置。

如何使用NDK开发opencv ndroid平台应用

9、在Jni目录下 增加Application.mk文件,加入内容为,#APP_STL := gnustl_static#APP_CPPFLAGS := -frtti –fexceptionsAPP_ABI := armeabi-v7a

10、同时修改Android.m氯短赤亻k文件为:此配置选项是设置Opencv头文件路径,库文件连接方式,编译源文件及生成的库文件。L晦倘佳鳎OCAL_PATH := $(call my-dir)include $(CLEAR_VARS)OPENCV_LIB_TYPE:=STATICOPENCV_INSTALL_MODULES:=oninclude C:\Users\admin\workspace\sdk\native\jni\OpenCV.mkLOCAL_MODULE := HelloLOCAL_LDLIBS += -llog -ldlLOCAL_SRC_FILES := Hello.cppinclude $(BUILD_SHARED_LIBRARY)

11、修改hello.cpp文件//加入头文件#include <opencv2/opencv.hpp>#include <opencv2/core/艘早祓胂core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/imgproc/imgproc.hpp>using namespace cv;jstring JniString(JNIEnv* env) {return env->NewStringUTF("Hello,NDK");}extern "C"{JNIEXPORT jstring JNICALL Java_com_example_hello_MainActivity_stringFromJNI(JNIEnv* env,jobject o){完整代码如下:

如何使用NDK开发opencv ndroid平台应用

12、向手机中丢入一个图片文件,路径为/storage/emulated/0/1.jpg编译运行,have fun.在应用程序中点击button, 将文件/storage/emulated/0/out.txt取出,查看文件内容为: Hello,image size=1920 x 1200这说明opencv已经正确加载,并执行opencv库中函数,另外,此时opencv是静态编译到应用程序中的。如对读者有帮助,欢迎投宝贵一票,谢谢!

如何使用NDK开发opencv ndroid平台应用
猜你喜欢