Windows 下 Cmake 编译 OpenCV + opencv_contrib 模块总结

Tips: 第一次将 openCV 和 opencv_contrib 一起编译,编译了一晚上,中间报错了不少错,下面是安装记录以及一些错误的解决方式。

注意事项:

1. OpenCV 版本与 opencv_contrib 版本要一样
2. Cmake 配置过程中取消某些选项可以避免一些错误

——————————————————————-分割线————————————————————————-

1. 下载 OpenCV 与 opencv_contrib

opencv 地址: https://github.com/opencv/opencv
opencv_contrib 地址:https://github.com/opencv/opencv_contrib

1.1 两个都用 git clone 下载 (这样可以版本控制,推荐,很方便)

这里写图片描述

如上图所示,复制下载链接,然后在 git bash 中使用链接下载:

git clone https://github.com/opencv/opencv.git

会得到一个名字叫 opencv 的文件夹。进入文件夹 通过 :

git tag

查看 github 的版本,然后根据需求,使用下面的语句设置成自己的版本(以 opencv3.3.0 版本为例):

git reset --hard 3.3.0  #将 3.3.0 换成自己的版本就行

完成上面的步骤 opencv 下载就完成了。

opencv_contrib 使用 git clone 下载,包括配置版本方式同上,确保 opencv 和 opencv_contrib 最后的版本是相同的,相同的,相同的。

(使用版本控制,就可以新建不同名字的build文件夹,然后根据需求在同一个目录下编译不同版本的opencv,不用重新下载了)

1.2 直接点击 download

这里在 github 中最好选择状态栏下中的 releases,在其中我们可以确定版本。
这里写图片描述
进入后根据需要下载对应的 Source code 压缩包就可以了。

opencv_contrib 也是同上,在 releases 里面选择相同的版本,下载源码压缩包即可。

2. Cmake 配置

这里我们默认已经下载好了 cmake, 在命令行中打开 cmake, 选中opencv和build文件夹的路径,然后点击 Configure, 以下是 Configure 成功后的一些建议:

2.1 取消关于TEST的都取消

这里写图片描述
Search 中输入 TEST 然后将搜索出来的都取消。

2.2 取消 CUDA 相关选项

主要是以下两个,不然的话在后面用 VS 编译的时候会很长时间,没安装CUDA 还会报错。
这里写图片描述

2.3 勾选 BUILD_opencv_world

这样最后 opencv 的依赖库就会合成为 opencv_xxxworld.lib,调用起来会很方便。
这里写图片描述

2.4 添加 opencv_contrib 的路径

直接往下翻找到 OPENCV_EXTRA_MODULES_PATH搜索关键词EXTRA,然后再其中加入 opencv_contrib/modules 路径。(以我的为例)

这里写图片描述

然后再次点击 Configure( 注意是 Configure , 不是Generate)

这时会又多出一些选项给你,红色的部分代表新添加的选项,例如:
这里写图片描述

2.5 取消 BUILD_opencv_cnn_3dobj

这里写图片描述

不然可能会报下面的错误:
这里写图片描述

虽然可以在 GLOG_LIB 和 PROTOBUF_LIB 中通过加入计算机中:

glog.lib
libprotobuf.lib

的路径解决。(windows下 Caffe 配置会自动下载相关库)

不过这里将上面的 opencv_cnn_3dobj 的库可以解决。

2.6上面步骤完成后再点击Generate

这里写图片描述

基本就可以 Generate Done 了。

剩下的就和正常配置 opencv以下了,详见:

Windows下 Cmake + VS 编译 OpenCV 源码

Tips: 如果以上步骤顺利完成,但是再VS 编译过程中报错了,找不到头文件或者找不到依赖库的错误,说明前面的步骤还是有问题,还是要再仔细检查,重新 Cmake 一下。

相关博客:

Windows下 Cmake + VS 编译 OpenCV 源码
OpenCV 不同版本之间的切换
”编译OpenCV, /include/opencv2下只有一个opencv.hpp文件 “的解决方法
要基于 Android 的 OpenCV 4.0.1 和 OpenCV Contrib 4.0.1 进行编译,可以按照以下步骤进行: 1. 下载 OpenCV 4.0.1 和 OpenCV Contrib 4.0.1 的源代码: ``` git clone https://github.com/opencv/opencv.git cd opencv git checkout 4.0.1 cd .. git clone https://github.com/opencv/opencv_contrib.git cd opencv_contrib git checkout 4.0.1 ``` 2. 安装 Android NDK 和 Android SDK,并设置相应的环境变量。 3. 在 opencv 目录下创建一个 build 目录,并进入该目录: ``` mkdir build cd build ``` 4. 运行以下命令,生成 OpenCV Android 库: ``` cmake -DANDROID_ABI=armeabi-v7a \ -DANDROID_PLATFORM=android-21 \ -DANDROID_TOOLCHAIN=clang \ -DANDROID_STL=c++_static \ -DWITH_OPENCL=OFF \ -DWITH_IPP=OFF \ -DWITH_TBB=OFF \ -DWITH_MATLAB=OFF \ -DWITH_CUDA=OFF \ -DWITH_GTK=OFF \ -DBUILD_opencv_apps=OFF \ -DBUILD_ANDROID_EXAMPLES=OFF \ -DBUILD_ANDROID_PROJECTS=OFF \ -DBUILD_DOCS=OFF \ -DBUILD_EXAMPLES=OFF \ -DBUILD_PACKAGE=OFF \ -DBUILD_PERF_TESTS=OFF \ -DBUILD_TESTS=OFF \ -DOPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_TOOLCHAIN_FILE=../../android.toolchain.cmake \ ../ ``` 其中,`ANDROID_ABI` 表示 Android 平台架构,这里设置为 `armeabi-v7a`,表示 ARMv7 架构;`ANDROID_PLATFORM` 表示 Android 平台版本,这里设置为 `android-21`;`ANDROID_TOOLCHAIN` 表示使用的工具链,这里设置为 `clang`;`ANDROID_STL` 表示使用的 C++ 标准库,这里设置为 `c++_static`,表示静态链接;`WITH_OPENCL`、`WITH_IPP`、`WITH_TBB`、`WITH_MATLAB`、`WITH_CUDA`、`WITH_GTK` 分别表示是否启用 OpenCL、IPP、TBB、MATLAB、CUDA、GTK 等功能,这里都设置为 `OFF`;`BUILD_opencv_apps`、`BUILD_ANDROID_EXAMPLES`、`BUILD_ANDROID_PROJECTS`、`BUILD_DOCS`、`BUILD_EXAMPLES`、`BUILD_PACKAGE`、`BUILD_PERF_TESTS`、`BUILD_TESTS` 分别表示是否编译 OpenCV 应用程序、Android 示例、Android 项目、文档、示例、打包、性能测试、测试,这里都设置为 `OFF`;`OPENCV_EXTRA_MODULES_PATH` 表示 OpenCV Contrib 目录的路径;`CMAKE_BUILD_TYPE` 表示编译类型,这里设置为 `Release`;`CMAKE_TOOLCHAIN_FILE` 表示使用的交叉编译工具链文件。 5. 运行以下命令,编译生成 OpenCV Android 库: ``` make -j4 ``` 其中,`-j4` 表示使用 4 个核心进行编译。 6. 在 build 目录下会生成一个 `sdk` 目录,其中包含编译好的 OpenCV Android 库。 可以将该库导入到 Android Studio 中,然后在项目中使用该库提供的函数进行开发。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值