1. 程式人生 > >Android studio專案中使用JNI呼叫opencv的c++程式

Android studio專案中使用JNI呼叫opencv的c++程式

前言

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的函式: