前言
opencv虽然有java版本,但是对于轮廓,点等数据结构和c++版本不一样,这给移植带来了大量的工作量。好在java有JNI(Java Native Interface)可以调用c++函数。
本文主要介绍如何在安卓手机APP项目中调用用c++写的通过opencv处理图像的算法。使用的开发IDE是Android studio。
准备工作
首先新建c++支持的手机项目。
然后参考https://blog.csdn.net/qq_36992688/article/details/79214273,下载OpenCV-android-sdk。
复制文件
在工程目录下的 app/src/main 下面新建两个文件夹,分别是cpp和jniLibs,如果有就不用新建。
然后把OpenCV-android-sdk\sdk\native\libs中内容拷贝到jniLibs中
最后把OpenCV-android-sdk\sdk\native\jni中的include文件夹拷贝到cpp中。
修改Cmakelist.txt
在Cmakelists中添加以下内容
set(libs "${CMAKE_SOURCE_DIR}/src/main/jniLibs")
include_directories(${CMAKE_SOURCE_DIR}/src/main/cpp/include)
add_library(libopencv_java3 SHARED IMPORTED )
set_target_properties(libopencv_java3 PROPERTIES
IMPORTED_LOCATION "${libs}/${ANDROID_ABI}/libopencv_java3.so")
修改target_link_libraries中内容为:
target_link_libraries( native-lib android log libopencv_java3 ${log-lib})
添加头文件和命名空间
在native-lib.cpp中添加如下内容
#include <opencv/cv.h>
#include <opencv2/opencv.hpp>
using namespace cv;
这样就可以在native-lib.cpp中使用opencv的函数: