源码编译opencv的安卓Android库
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了源码编译opencv的安卓Android库,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3925字,纯文字阅读大概需要6分钟。
内容图文
因为项目需要,稍微改了opencv一点源码,这个时候就需要源码编译opencv的库了。我pc机器上面试了没有问题,但是我们项目是跑在移动设备安卓上面的,算法通过jni打包接口供上层java调用,opencv用的安卓版本的,这就坑爹了,没办法,我就编译安卓版本的opencv吧,这里面的坑真多。
参考链接:
https://www.jianshu.com/p/925614d6e9e0 OpenCV3.4源码交叉编译android库
https://blog.csdn.net/Martin_chen2/article/details/80463610
https://www.jianshu.com/p/288ca9327b32 源码编译Android openCV+openCV_contrib库
//下面这个链接很重要,生成libopencv_java.so。
https://blog.csdn.net/u010363893/article/details/54892448?depth_1-utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-1&utm_source=distribute.pc_relevant.none-task-blog-OPENSEARCH-1
//下面这个链接我按照他的来的,没有成功,报错。报错warning: /bin/ld: skipping incompatible,然后是找不到opencv库什么的
https://www.cnblogs.com/gao-chun/p/4971126.html android studio 使用 jni 编译 opencv 完整实例 之 图像边缘检测!
我的环境是Ubuntu16.04
首先是需要下载安装ndk
ndk:android-ndk-14b
cd /opt ###/opt为android-ndk-r14b所在的目录,根据你对应的目录改变
./android-ndk-r14b/build/tools/make-standalone-toolchain.sh --toolchain=arm-linux-androideabi-4.9 --platform=android-21 --install-dir=./android-toolchain-r14b/android-armv7 --arch=arm --force
上面这个路径随意。
当然我整的时候各种问题,还有cmake版本过低的问题。还下了一个android-ndk-r21的。
还有下面的指令,一开始明明加了参数ANDROID_ARCH_ABI=arm64-v8a,死活生成armeabi-v7a啊,然后去
opencv-3.2.0/platforms/android/android.toolchain.cmake改这个,直接强制SET(ANDROID_ABI "arm64-v8a")
#line638
# choose target ABI
__INIT_VARIABLE( ANDROID_ABI VALUES ${ANDROID_SUPPORTED_ABIS} )
#####################################################YHL ADD yhl 20200409###########################################################
SET(ANDROID_ABI "arm64-v8a")
//0410-arm64可以 但是没有so
export ANDROID_NDK=/data_2/everyday/down_load/android-ndk/14/android-ndk-r14b
cmake -DCMAKE_TOOLCHAIN_FILE=../platforms/android/android.toolchain.cmake -DCMAKE_ANDROID_NDK=/data_2/everyday/down_load/android-ndk/14/android-ndk-r14b -DANDROID_NATIVE_API_LEVEL=21 -DBUILD_ANDROID_PROJECTS=OFF -DBUILD_ANDROID_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=Release -DBUILD_JAVA=ON -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a -D WITH_CUDA=OFF -D WITH_MATLAB=OFF -D BUILD_DOCS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/data_1/Yang/software/opencv-3.2.0/0myfile-android/install-now-1 ..
然后敲
make -j4
make install -j4
按照上面的这个命令,只有.a,没有libopencv_java3.so。因为一开始安卓用的只有libopencv_java3.so这个,官方下的库也是在OpenCV-android-sdk/sdk/native/libs/arm64-v8a文件夹下
而我的,
就是没有so
然后同事告诉我
//同事告诉我加 -DBUILD_SHARED_LIBS=ON
export ANDROID_NDK=/data_2/everyday/down_load/android-ndk/14/android-ndk-r14b
cmake -DCMAKE_TOOLCHAIN_FILE=../platforms/android/android.toolchain.cmake -DCMAKE_ANDROID_NDK=/data_2/everyday/down_load/android-ndk/14/android-ndk-r14b -DANDROID_NATIVE_API_LEVEL=21 -DBUILD_ANDROID_PROJECTS=OFF -DBUILD_ANDROID_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=Release -DBUILD_JAVA=ON -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a -D WITH_CUDA=OFF -D WITH_MATLAB=OFF -D BUILD_DOCS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_TESTS=OFF -DBUILD_SHARED_LIBS=ON -DCMAKE_INSTALL_PREFIX=/data_1/Yang/software/opencv-3.2.0/0myfile-android/install-now-2 ..
变成都是so了。。。
但是总感觉这些已经能用了。然后无意间查资料发现,说
”PS:编译如果需要生成libopencv_java.so,需要安装ant工具,apt-get install ant 即可。通过修改CMakeCache.txt可以修改编译配置,里面有BUILD_OPENCV_JAVA,怎会产生libopencv_java.so。“
然后我敲了:
sudo apt-get install ant
再加上 -DBUILD_OPENCV_JAVA=ON
//0410-arm64可以 但是没有so -DBUILD_OPENCV_JAVA=ON
export ANDROID_NDK=/data_2/everyday/down_load/android-ndk/14/android-ndk-r14b
cmake -DCMAKE_TOOLCHAIN_FILE=../platforms/android/android.toolchain.cmake -DCMAKE_ANDROID_NDK=/data_2/everyday/down_load/android-ndk/14/android-ndk-r14b -DANDROID_NATIVE_API_LEVEL=21 -DBUILD_ANDROID_PROJECTS=OFF -DBUILD_ANDROID_EXAMPLES=OFF -DCMAKE_BUILD_TYPE=Release -DBUILD_JAVA=ON -DBUILD_OPENCV_JAVA=ON -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a -D WITH_CUDA=OFF -D WITH_MATLAB=OFF -D BUILD_DOCS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_TESTS=OFF -DCMAKE_INSTALL_PREFIX=/data_1/Yang/software/opencv-3.2.0/0myfile-android/install-now-0413_0 ..
哈哈,终于有了libopencv_java3.so:
原文:https://www.cnblogs.com/yanghailin/p/12690756.html
内容总结
以上是互联网集市为您收集整理的源码编译opencv的安卓Android库全部内容,希望文章能够帮你解决源码编译opencv的安卓Android库所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。