编译android libopencv_java4.so,版本opencv-4.5.5和contrib,成功编译并经测试后的源代码和脚本

一、 文件目录
opencv/open4.5.5
opencv/open4.5.5/ opencv_contrib
opencv/open4.5.5/ build :编译目录和库生成目录
二、 编译脚本
opencv下build-android-opencv.sh 这个脚本文件是重点
如果不生成android工程文件不需要sdk,只需要ndk就行了,需特别注意如果cmake过程出现问题,很大概率是-DCMAKE_TOOLCHAIN_FILE= “${WD}/android-cmake/android.toolchain.cmake” \的问题,原因这里就不说明了,解决办法是把这个opencv自带的android.toolchain.cmake换成你的ndk中带有的android.toolchain.cmake,它在android-ndk-r23b/build/cmake下,也就是你只需要把-DCMAKE_TOOLCHAIN_FILE=/你的ndk/android-ndk-r14b/build/cmake/android.toolchain.cmake,当然ndk14b是不会有这个问题的,大概率是你需要使用其他版本的ndk,如17,20。-DCMAKE_ANDROID_ARCH_ABI 设置编译的版本,目前设置的是armv7版本,如果需要编译arm64,则设置为arm64-v8a即可。 该选项可以设置为:”armeabi-v7a”, “armeabi”, “armeabi-v7a with NEON”, “armeabi-v7a-hard with NEON”, “armeabi-v7a with VFPV3”, “armeabi-v6 with VFP”, “arm64-v8a”, “mips”, “mips64”, “x86”, “x86_64″。
cmake过程中可能出现下载错误,主要是网络问题,多执行几次就可以了。

三、 编译输出
sudo ./build-android-opencv.sh 需使用超级用户,否则有错误,源码根下这个文件。
1)、在build目录只输出静态.a库,没有生成.so库,需要配置-DBUILD_SHARED_LIBS=ON.

2)、合并如libopencv_java4.so 1个库则需要增加参数-DBUILD_JAVA=ON -DBUILD_OPENCV_JAVA=ON。
3)、sudo apt-get install ant,然后配置-D ANT_EXECUTABLE=”/usr/bin”才能保证cmake ant:后面不是 NO
4)、构建libopencv_java4.so是通过静态链接并建立android工程,然后在工程里对通过ndk编译进行链接成1个库。
5)最后编译android项目出错,android项目路径是open4.5.5/ modules/java/android_sdk/ CMakeLists.txt里进行编译的出错位置, /gradlew这个命令没有发现,把它这个语句注释掉.,不会影响结果。
add_custom_command(
OUTPUT “${AAR_FILE}” “${OPENCV_DEPHELPER}/${the_module}_android”

COMMAND ./gradlew ${OPENCV_GRADLE_VERBOSE_OPTIONS} “opencv:assemble”

COMMAND ${CMAKE_COMMAND} -E touch “${OPENCV_DEPHELPER}/${the_module}_android”
WORKING_DIRECTORY “${ANDROID_BUILD_BASE_DIR}”
DEPENDS ${depends} ${the_module}
COMMENT “Building OpenCV Android library project”
)
这条注释语句:/home/work/l2tavl/opencv/opencv-4.5.5/build/armeabi-v7a with NEON/modules/java/android_sdk/CMakeFiles/opencv_java_android.dir/build.make
产生下面语句导致执行出错:
cd “/home/work/l2tavl/opencv/opencv-4.5.5/build/armeabi-v7a with NEON/modules/java/android_sdk” && ./gradlew -i opencv:assemble

四、 so测试
1、使用Cmakelists.txt脚本进行编译,编译选项-fPIE,链接器能够把-fPIE选项下编译出来的.o文件链接成位置无关可执行程序
2、使用adb进行测试,不要copy到sdcard中,会提示没有权限操作,拷贝到data目录下
3、ndk下libc++_shared.so和libopencv_java4.so要一同拷贝相同目录下。
4、设置库路径export LD_LIBRARY_PATH=./
5、./ boxfilter

五、总结

./build-android-opencv.sh一定要看明白这个文件,不需要查看其他编译方法,其他编译方法也是调用camke,因此脚本才是最容易调试和发现问题。编译分成两个阶段,先成功编译,然后增加选项编译成libopencv_java4.so,希望对别人有帮助
六:下载,不好意思,只设置积分5分编译androidlibopencv_java4.so,版本opencv-4.5.5和contrib,成功编译后的源代码和脚本-Android文档类资源-CSDN下载

Original: https://blog.csdn.net/jasecat/article/details/123073282
Author: Prman Zhang
Title: 编译android libopencv_java4.so,版本opencv-4.5.5和contrib,成功编译并经测试后的源代码和脚本

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/704545/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球