下载资源
方式一集成
- 1、将下载的
opencv-4.5.5-android-sdk.zip
解压 - 2、新建项目(过程省略)
- 3、删除
OpenCV-android-sdk\sdk
目录下除红框内的文件,并导入到as项目中(new->module->Import Eclipse ADT project)
至此可以直接引用此Module 并在java中使用opencv - 4 如需引入并包装opencv中jni文件,可按
OpenCV-android-sdk\samples\face-detection
目录下build.gradle
文件和jni\CMakeLists.txt
修改
红框内替换为当前opencv jni文件目录
方式二集成
- 1、新建工程/依赖过程省略;
- 2、在
src/main
目录下新建cpp
目录和jniLibs
目录
- 3、将下载的
opencv-4.5.5-android-sdk.zip
解压并拷贝相关资源- 3.1、将
opencv-4.5.5-android-sdk\sdk\native\jni\include
目录(或直接拷贝目录里opencv2
目录)拷贝到cpp
目录中 - 3.2、将
OpenCV-android-sdk\sdk\native\libs
目录里内容
拷贝到jniLibs
目录下
- 3.1、将
- 4、在
cpp
目录下新建CMakeLists.txt
文件
注:新建Native C++项目时此文件默认创建
cmake_minimum_required(VERSION 3.4.1)
#opencv配置
include_directories(${CMAKE_SOURCE_DIR}/opencv2)#这里是指向拷贝到cpp目录下的opencv2目录 (如果拷贝的是include目录,这里路径应该为'${CMAKE_SOURCE_DIR}/include/opencv2')
set(CMAKE_VERBOSE_MAKEFILE on)
add_library(opencv_java4 STATIC IMPORTED)#添加opencv_java4 库
set_target_properties(opencv_java4
PROPERTIES IMPORTED_LOCATION
src/main/jniLibs/${ANDROID_ABI}/libopencv_java4.so)#导入opencv_java4库
...
target_link_libraries(
native-opencv #自定义库
${opencv_java4} #注意使用${}符号
${log-lib})#连接当前所需库
- 5、配置
build.gradle
文件
android {
compileSdkVersion 30
buildToolsVersion "30.0.2"
defaultConfig {
minSdkVersion 21
targetSdkVersion 30
versionCode 1
versionName "1.0"
...
ndk{
abiFilters 'arm64-v8a', 'armeabi-v7a'//按需添加
}
externalNativeBuild {
cmake {
cppFlags "-std=c++11 -frtti -fexceptions"
arguments "-DANDROID_STL=c++_shared"
"-DANDROID_TOOLCHAIN=clang"
abiFilters 'arm64-v8a', 'armeabi-v7a'//按需添加
}
}
}
...
externalNativeBuild {
cmake {
path "src/main/cpp/CMakeLists.txt"
version "3.10.2"
}
}
}
至此opencv库引入完成 可以直接在c文件中使用
- 6、拷贝
OpenCV-android-sdk\sdk\java\src\org\opencv
目录下内容到src/main/java/包名
目录下(建议拷贝到org\opencv
包文件下),并做细节修改
sourceSets {
main {
aidl.srcDirs = ['java/src']// 注意拷贝目录中包含aidl文件 可按此修改aidl文件目录地址 亦可从新使用as构建该aidl文件
}
}