网站续费合同,毕业季网站如何做网页,广告推销,wordpress站点主页做视频图像处理时需要对其进行水印的添加#xff0c;放在应用层调用工具性能方面不太满意#xff0c;于是当下采用opencvlibyuv方法进行处理。
对于Android的jni开发不是很懂#xff0c;我的需求是导入opencv方便在cpp中调用#xff0c;但目前找到的教程都是把opencv作为模…做视频图像处理时需要对其进行水印的添加放在应用层调用工具性能方面不太满意于是当下采用opencvlibyuv方法进行处理。
对于Android的jni开发不是很懂我的需求是导入opencv方便在cpp中调用但目前找到的教程都是把opencv作为模块进行导入在java层查看。
摸索了一段时间终于搞完了
1.下载对应的openCV包(我目前版本为4.10.0)
opencv下载 解压得到
2.AS中进行配置
2.1.把opencv的include文件夹复制到cpp目录下 2.2.把opencv的libs放置到与cpp目录同级的的jniLibs目录下
按需选择我项目只需要前两个 项目结构如下
3.对build.gradle(:模块名)内容进行修改
android {defaultConfig {externalNativeBuild {cmake {cppFlags arguments -DANDROID_STLc_shared}}ndk {abiFilters arm64-v8a,armeabi-v7a}}externalNativeBuild {cmake {path file(src/main/cpp/CMakeLists.txt)version 3.22.1}}sourceSets {main {jniLibs.srcDirs [src/main/jniLibs] //指定库的位置}}
}4.对CMakeLists.txt进行修改
# 设置 OpenCV 的头文件路径
include_directories(${CMAKE_SOURCE_DIR}/cpp/include)# 设置库的路径 采用文件的绝对路径 libyuv和opencv在同一层
set(OpenCV_LIBS_DIR E:/AndroidProject/Demo/app/src/main/jniLibs/${ANDROID_ABI})# 导入 OpenCV 的共享库
add_library(opencv_java4 SHARED IMPORTED)
set_target_properties(opencv_java4 PROPERTIES IMPORTED_LOCATION${OpenCV_LIBS_DIR}/libopencv_java4.so# 设置头文件
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/include)target_link_libraries(${CMAKE_PROJECT_NAME}androidopencv_java4 #链接声明log)测试cpp中是否可用opencv 导入头文件即可#include “opencv2/opencv.hpp” 没有报错即可正常使用如果提示找不到opencv.hpp则查看CMakeLists.txt中的路径是否正确
libyuv导入同理用的现成编译好的so库和头文件 libyuv 下载解压后得到 头文件在jni/include库在libs
最后完整的CMakeLists.txt如下
cmake_minimum_required(VERSION 3.22.1)project(dvr)set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)
set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -stdc11)# 设置 OpenCV 的头文件路径
include_directories(${CMAKE_SOURCE_DIR}/cpp/include)
# 导入 OpenCV 的共享库
set(OpenCV_LIBS_DIR E:/AndroidProject/Demo/app/src/main/jniLibs/${ANDROID_ABI})
add_library(opencv_java4 SHARED IMPORTED)
set_target_properties(opencv_java4 PROPERTIES IMPORTED_LOCATION${OpenCV_LIBS_DIR}/libopencv_java4.so)# libyuv
add_library(yuv SHARED IMPORTED)
set_target_properties(yuv PROPERTIES IMPORTED_LOCATION${OpenCV_LIBS_DIR}/libyuv.so)add_library(${CMAKE_PROJECT_NAME} SHAREDdvr.cpp)target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${CMAKE_SOURCE_DIR}/include)
target_link_libraries(${CMAKE_PROJECT_NAME}androidopencv_java4yuvlog)
图像处理什么的opencv这些都导入成功了自然也就简单了