Android Studio: JNI 使用小结
项目描述:在Android上部署KCF跟踪算法,KCF 源码为c++,且依赖OpenCV,为方便使用,在Android studio中将KCF打包成JNI类。实现过程涉及: JNI 调用 C++ 类对象/方法传递数组,c++ java Opencv 混合使用, cv::Mat和Bitmap的转换等。
1. 添加OpenCV依赖
Android OpenCV document: https://docs.opencv.org/2.4/doc/tutorials/introduction/android_binary_package/dev_with_OCV_on_Android.html#application-development-with-static-initialization
下载
OpenCV-android-sdk,在项目中:file->new->import module,选择your_path/OpenCV-android-sdk/sdk/java,导入Android studio 后,module名为openCVLibrary320修改
openCVLibrary320中的build.gradlecompileSdkVersion 24 buildToolsVersion "25.0.3" minSdkVersion 21 // 至少是 21 否则opencv camera类报错 targetSdkVersion 21为
appmodule添加依赖:project视图中打开open module settings, 选择app module ,右边绿色小加号点击,添加mudle dependence: openCVLibrary320OpenCV mixedprocessing: C++源码也依赖opencv,在Android.mk 编译c++库的时候要添加opencv依赖,
Android.mk :
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) ifdef OPENCV_ANDROID_SDK ifneq ("","$(wildcard $(OPENCV_ANDROID_SDK)/OpenCV.mk)") include ${ OPENCV_ANDROID_SDK}/OpenCV.mk else include ${ OPENCV_ANDROID_SDK}/sdk/native/jni/OpenCV.mk endif else include ../../sdk/native/jni/OpenCV.mk endif include /home/wurui/project/android/OpenCV-android-sdk/sdk/native/jni/OpenCV.mk LOCAL_MODULE := jniKCF LOCAL_SRC_FILES := ffttools.hpp \ fhog.cpp \ kcftracker.cpp \ labdata.hpp \ recttools.hpp \ kcfClass.cpp LOCAL_LDLIBS += -llog -ldl \ ## 在JNI中使用LOG -lm -llog -ljnigraphics LOCAL_LDFLAGS += -ljnigraphics ## mat/bitmap convert include $(BUILD_SHARED_LIBRARY)Application.mk :
APP_STL := gnustl_static APP_CPPFLAGS := -frtti -fexceptions APP_ABI := armeabi-v7a

这篇博客总结了在Android Studio中使用JNI打包C++源码,特别是结合OpenCV进行开发的过程。首先介绍了如何添加OpenCV依赖,包括下载、导入Android Studio、修改配置以及在模块中添加依赖。然后详细阐述了JNI如何将C++源码打包,包括创建JNI类,生成头文件,并实现C++类对象的调用。内容涵盖了Android.mk和Application.mk的修改以及与cpp文件的关联设置。
最低0.47元/天 解锁文章
622

被折叠的 条评论
为什么被折叠?



