我是靠谱客的博主 坚强小懒猪,最近开发中收集的这篇文章主要介绍linux 混合编译,Linux 混合编译opencv与opencv_contrib的android版本,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、该方法只能编译.a文件

1 $ git clone https://github.com/tzutalin/build-opencv-for-android.git

2 $ cd build-opencv-for-android3 $ ./setup.sh 3.3.1

而后配置android ndk的路径

export ANDROID_NDK=./

而后运行脚本即可

./build-android-opencv.sh

二、可同时编译.a和.so

编译环境准备

OpenCV 3.1.0源码(假定目录为)

OpenCV_contrib 3.1.0源码(假定目录为)

cmake-gui 3.8.2 cmake的GUI工具

Mingw 编译工具(假定目录为)

Android NDK r12b 或者最新(假定目录为)

Android SDK >=19(假定目录为)

Android Studio

Java ANT 1.9.9(假定目录为)

以上你是需要准备编译的基础环境,下面分别讲解一下:

1.OpenCV源码

1

2

3

cd ;

git checkout -b "3.1.0" "3.1.0"

2.OpenCV_contrib源码

1

2

3

cd ;

git checkout -b "3.1.0" "3.1.0"

PS> 注意我们看到这里我采用的是opencv和opencv_contrib的3.1.0版本,主要的原因是opencv3.0.0和

3.2.0在实践中会遇到各种莫名其妙的原因,很难进行下去(比如opencv3.2.0目前还很难用mingw编译),这一块的摸索花了我大量的时间,所以我建议你也统一使用3.1.0版本。

4.MinGW

MinGW是Windows下的GCC编译工具,去到Sourceforge下载MinGW的管理工具mingw-get-setup.exe。配置mingw的目录为,并将添加进系统变量。

PS> 注意你可以选择mingw32或者mingw64都是可以的。我后续采用的是mingw32。也就是安装选项中的:

mingw32.png

5.Android NDK

NDK的官方介绍是:

Android NDK 是一套允许您使用原生代码语言(例如 C 和 C++)实现部分应用的工具集。在开发某些类型应用时,这有助于您重复使用以这些语言编写的代码库。

下载后解压开即可。解压目录为。

6&7. Android SDK和Android Studio就不必说了,注意SDK的版本安装全一点,从API_LEVEL=19以上的都下了最好。其中SDK的目录为。

8.JAVA ANT 1.9.9

在编译OpenCV for JAVA起到关键作用。下载地址:http://apache.fayea.com//ant/binaries/apache-ant-1.9.9-bin.zip。 相应解压目录为。

编译配置

去到 中,创建/platforms/android_arm

双击打开”cmake-gui.exe”

在”where is th source code”填入目录

在”where to build the binaries”填入/platforms/android_arm

点击”Add Entry”,添加”ANDROID_NDK”,并设定为”PATH”类目,对应目录为,在我的电脑上就是”F:Androidandroid-ndk-r10e”

android-ndk-setting.png

点击”Add Entry”,添加”ANDROID_NDK_HOST_X64”,并设定为”BOOL”类目,点击勾选。这是因为我们的NDK是64位版本的,如果你的NDK是32位的,则不需要勾选

android-ndk-setting-2.png

点击”Add Entry”,添加”CMAKE_TOOLCHAIN_FILE”,并设定为”FILEPATH”类目,设置路径为/platforms/android/android.toolchain.cmake

android-ndk-setting-3.png

点击”Add Entry”,添加”CMAKE_BUILD_WITH_INSTALL_RPATH”,并设定为”BOOL”类目,点击勾选

点击”Add Entry”,添加”ANDROID_SDK”,并设定为”path”类目,设置路径为

点击”Add Entry”,添加”ANDROID_ABI”,并设定为”string”类目,设置值为armeabi-v7a。这里的选项也即你需要编译的库类型,如果你想要编译armeabi或者X86都在这个值上修改。我们可以先编译armeabi-v7a

android-ndk-setting-4.png

点击”Add Entry”,添加”ANDROID_NATIVE_API_LEVEL”,并设定为”string”类目,设置值为19。这里的选项也即你需要编译的API-LEVEL,我定的是19,你也可以用20或者21

点击”Configure”,选择”MinGW Makefile”作为编译选项,并在接下来的选项中选择”Specify toolchain file for cross-compiling”,点击”Next”,对应的路径选择/platforms/android/android.toolchain.cmake,点击”Finish”

mingw-setting-1.png

mingw-setting-2.png

等待configure完成,如下图所示:

cmake-configure-1.png

我们接着添加opencv-contrib模块,搜索extra,在OPENCV_EXTRA_MODULES_PATH添加路径/modules

Configuring done完成后我们还需要进行一些调整:

WITH_CUDA=OFF

WITH_MATLAB=OFF

BUILD_DOCS=OFF

BUILD_PERF_TESTS=OFF

BUILD_TESTS=OFF

WITH_TIFF=OFF

BUILD_opencv_bioinspired=OFF

BUILD_opencv_dnn=OFF(如果你用不到这个的话,建议你禁掉)

BUILD_opencv_structured_light=OFF(我当时添加这个模块时出现了错误,建议你也禁掉)

BUILD_opencv_ximgproc=OFF(我当时添加这个模块时出现了错误,建议你也禁掉)

BUILD_opencv_world:BOOL=OFF (不用尝试编译opencv_world了,从我的经验来看是编译不出来)

BUILD_opencv_contrib_world:BOOL=OFF (同上)

ANT_EXECUTABLE=/bin/ant.bat

上诉设定调整好后,再次点击configure后再点击generate,显示:

Configuring done

Generating done

执行编译

在上述编译配置完成后,通过命令行工具进入/platforms/android_arm目录,执行

1

mingw32-make -j4

即可开始编译

building.png

遇到的问题:

1、ndk和sdk需要选择win64版本

2、报选择API错误,实际是读取ndk中特定api-level中的include文件读取不到,从其他版本的ndk中拷贝即可

最后

以上就是坚强小懒猪为你收集整理的linux 混合编译,Linux 混合编译opencv与opencv_contrib的android版本的全部内容,希望文章能够帮你解决linux 混合编译,Linux 混合编译opencv与opencv_contrib的android版本所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部