Android 使用 OpenCV (JNI 实现)
OpenCV 有提供 Android Jar 库。
可以使用 OpenCV.jar 去在 Android 中实现 OpenCV 的功能。
但是,有个问题:
Android 版本的 OpenCV 和 C++ 版本的接口存在一定的差异。
导致如果你想实现以前 C++ 版本的 OpenCV 功能,那么改动量还是不少的。
因此,如果你想快速在 Android 上使用 C++ 版本已经实现的 OpenCV 功能,那就可以采用以前讲到的 JNI。
下载 OpenCV Android 库
下载方式不介绍了,可以访问 https://opencv.org/releases.html 下载相应的 OpenCV 库。
我使用的是 opencv-3.4.3-android-sdk.zip
解压 OpenCV 压缩档
把压缩文档解压到特定目录,解压后得到:OpenCV-android-sdk
目录
其中我们要用到的文件在 OpenCV-android-sdk/sdk/native
其中更主要的几个目录是:
- jni
- include
- opencv
- opencv2
- include
- libs
- arm64-v8a
- armeabi
- armeabi-v7a
- mips
- mips64
- x86
- x86_64
- staticlibs
- arm64-v8a
- armeabi
- armeabi-v7a
- mips
- mips64
- x86
- x86_64
libs
和 staticlibs
目录内还有其它架构(如:mips
,mips64
,x86
,x86_64
等)。
但 Android 常用 arm 架构,其它可自行考虑。
接下来在 Android 工程中建立 CMakeLists.txt,使用 CMake 编译 OpenCV 的 JNI 代码。
CMake 编译 OpenCV JNI
# 请注意,修改本地的 OPENCV_SDK_PATH (OpenCV-android-sdk 路径)
# Sets the minimum version of CMake required to build the native library.
#set(OPENCV_SDK_PATH D:/Code/OpenCV-android-sdk)#设置OpenCv的路径变量
set(OPENCV_SDK_PATH ${CMAKE_SOURCE_DIR}/src/main/cpp/opencv_src)#设置OpenCv的路径变量
# 配置加载native依赖
include_directories(${OPENCV_SDK_PATH}/sdk/native/jni/include
${CMAKE_SOURCE_DIR}/src/main/cpp/
${CMAKE_SOURCE_DIR}/src/main/cpp/include
)
set(CMAKE_VERBOSE