AndroidStudio集成OpenCV的實現教程

我的環境:

Android Studio Arctic Fox + JDK11 + Gradle 7.0.2 + NDK21 + opencv-4.5.1-android-sdk

代碼鏈接:

OpenCV 環境搭建 Demo

在這裡插入圖片描述

1.創建一個Native工程

2.下載OpenCV SDK

OpenCV SDK

在這裡插入圖片描述

在這裡插入圖片描述

3.在Android Studio的cpp目錄下新建libs文件夾

在這裡插入圖片描述

將我們下載的OpenCV SDK 這個文件夾“OpenCV-android-sdk\sdk\native\libs” 下的 armeabi-v7a 整個復制到剛才的 libs 文件夾下

在這裡插入圖片描述

在這裡插入圖片描述

4.將 “OpenCV-android-sdk\sdk\native\jni” 路徑下的 include 文件夾整個復制到 cpp 文件夾下

在這裡插入圖片描述

在這裡插入圖片描述

5.配置build.gradle

在這裡插入圖片描述

6.配置CMakelists.txt

#目的是為瞭讓CMake找到我們的頭文件在哪裡,這裡是在 cpp/include 這個文件夾下
include_directories(include)

#設置系統變量,目的是為瞭讓CMake知道在哪個目錄下找到我們的libopencv_java4.so這個庫
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -L${CMAKE_SOURCE_DIR}/libs/${ANDROID_ABI}")

target_link_libraries(
        myopencv
        opencv_java4 #鏈接libopencv_java4.so,這樣在生成的APK中才會有這個so
        ${log-lib})

在這裡插入圖片描述

7.點擊build,發現生成的apk中有我們引入的庫

在這裡插入圖片描述

接下來就是運行時會報錯

Java.lang.UnsatisfiedLinkError: dlopen failed: library “libc++_shared.so” not found

在這裡插入圖片描述

原因是在 NDK18 以前采用的是 gcc 編譯,NDK18 以後采用的是 clang ,而且 NDK18 以後沒有 libc++_shared.so 這個庫瞭,所以在運行時會報錯。

解決辦法:

在build.gradle中增加一句

arguments '-DANDROID_STL=c++_shared'

這樣可以遠程獲取到 libc++_shared.so 這個庫

在這裡插入圖片描述

重新編譯後發現 apk 中有瞭 libc++_shared.so ,而且 apk 可以正常運行

在這裡插入圖片描述

到此這篇關於AndroidStudio集成OpenCV的實現教程的文章就介紹到這瞭,更多相關AndroidStudio集成OpenCV內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: