欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

AndroidStudio集成OpenCV的实现教程

程序员文章站 2021-12-08 11:54:28
我的环境:android studio arctic fox + jdk11 + gradle 7.0.2 + ndk21 + opencv-4.5.1-android-sdk代码链接:opencv...

我的环境:

android studio arctic fox + jdk11 + gradle 7.0.2 + ndk21 + opencv-4.5.1-android-sdk

代码链接:

opencv 环境搭建 demo

AndroidStudio集成OpenCV的实现教程

1.创建一个native工程

2.下载opencv sdk

opencv sdk

AndroidStudio集成OpenCV的实现教程

AndroidStudio集成OpenCV的实现教程

3.在android studio的cpp目录下新建libs文件夹

AndroidStudio集成OpenCV的实现教程

将我们下载的opencv sdk 这个文件夹“opencv-android-sdk\sdk\native\libs” 下的 armeabi-v7a 整个复制到刚才的 libs 文件夹下

AndroidStudio集成OpenCV的实现教程

AndroidStudio集成OpenCV的实现教程

4.将 “opencv-android-sdk\sdk\native\jni” 路径下的 include 文件夹整个复制到 cpp 文件夹下

AndroidStudio集成OpenCV的实现教程

AndroidStudio集成OpenCV的实现教程

5.配置build.gradle

AndroidStudio集成OpenCV的实现教程

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})

AndroidStudio集成OpenCV的实现教程

7.点击build,发现生成的apk中有我们引入的库

AndroidStudio集成OpenCV的实现教程

接下来就是运行时会报错

java.lang.unsatisfiedlinkerror: dlopen failed: library "libc++_shared.so" not found

AndroidStudio集成OpenCV的实现教程

原因是在 ndk18 以前采用的是 gcc 编译,ndk18 以后采用的是 clang ,而且 ndk18 以后没有 libc++_shared.so 这个库了,所以在运行时会报错。

解决办法:

在build.gradle中增加一句

arguments '-dandroid_stl=c++_shared'

这样可以远程获取到 libc++_shared.so 这个库

AndroidStudio集成OpenCV的实现教程

重新编译后发现 apk 中有了 libc++_shared.so ,而且 apk 可以正常运行

AndroidStudio集成OpenCV的实现教程

到此这篇关于androidstudio集成opencv的实现教程的文章就介绍到这了,更多相关androidstudio集成opencv内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!