Android studio專案中使用JNI呼叫opencv的c++程式
阿新 • • 發佈:2019-01-08
前言
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的函式: