Windows下编译opencv&opencv_contrib(避坑版)

1、前期准备

在 Windows 下编译 opencv&opencv_contrib 需要以下三个工具:

  • CMake
  • w64devkit
  • opencv&opencv_contrib 源码

作者已成功编译并测试的版本为 opencv 4.7.0opencv 4.8.1opencv 4.10.0,且各工具版本信息为(CMake 3.24.4w64devkit 2.0.0)。

1.1 Cmake 下载安装

Cmake 官网:https://cmake.org

CMake:一个强大的软件构建系统;
CMake是构建C++代码事实上的标准,每月下载量超过200万次。这是一个用于管理软件构建过程的强大、全面的解决方案。通过访问我们的资源部分,获得成功利用CMake所需的一切。

[Step 1]: 点击 cmake 版本 进入 CMake 版本信息选择页面,选择合适的版本并点击


[Step 2]: 再根据电脑配置(64位、32位)选择要下载的安装包


[Step 3]: 下载下来解压到一个文件夹(作者为 D:\Software\cmake),再将 bin 目录添加至环境变量-系统变量(S),打开CMD测试

cmake -version

1.2 w64devkit 下载安装

w64devkit 项目:https://github.com/skeeto/w64devkit

适用于x64和x86 Windows的便携式C、C++和Fortran开发工具包;
w64devkit是一个Dockerfile,它从源代码构建了一个小型的、可移植的开发套件,用于在x64 Windows上创建C和C++应用程序。

[Step 1]: 点击 w64devkit-releases 进入 w64devkit 发布页面,点击下载


[Step 2]: 下载后双击 .exe 文件,解压至某个目录(作者为 D:\Software\w64devkit),内容如下


[Step 3]: 同样,将 bin 目录添加至环境变量-系统变量(S),打开CMD测试

gcc --version
g++ --version

1.3 opencv&opencv_contrib 源码下载

opencv 官网:https://opencv.org
onpencv_contrib 项目:https://github.com/opencv/opencv_contrib

OpenCV提供了一个实时优化的计算机视觉库、工具和硬件。它还支持机器学习(ML)的模型执行和…

[Step 1]: 点击 opencv-releases 进入 opencv 版本页面,点击 Windows 进行下载


[Step 2]: 双击 .exe 文件并提取至某个目录(作者为 D:\Software\OpenCV\opencv-4.10.0),内容为(其中,sources 目录要编译)


[Step 3]: 点击 opencv-contrib-tags 进入 opencv_contrib 版本页面,点击 4.10.0 进行源码下载



[Step 4]: 解压至某个目录(作者为 D:\Software\OpenCV\opencv_contrib-4.10.0),内容为(其中,modules 目录要编译)

2、正式编译

到目前为止,我们已经准备好了所有的编译所需的工具或源码了:
1、CMake:D:\Software\cmake
2、w64devkit:D:\Software\w64devkit
3、opencv 和 opencv_contrib源码:D:\Software\OpenCV\opencv-4.10.0D:\Software\OpenCV\opencv_contrib-4.10.0

2.1 配置编译环境

[Step 1]: 新建一个空文件夹用于存放编译后的内容,作者为 D:\Software\OpenCV\opencv-4.10.0-builds


[Step 2]: 进入 cmake 的 bin 目录下,双击 cmake-gui.exe 或直接在 CMD 输入 cmake-gui,填入相关信息

[Step 3]: 再点击 Configure 选择如下,点击 FInish 即可开始编译

'Release' build type is used by default. Use CMAKE_BUILD_TYPE to specify build type (Release or Debug)
The CXX compiler identification is GNU 14.2.0
The C compiler identification is GNU 14.2.0
Detecting CXX compiler ABI info
Detecting CXX compiler ABI info - done
Check for working CXX compiler: D:/Software/w64devkit/bin/c++.exe - skipped
Detecting CXX compile features
Detecting CXX compile features - done
Detecting C compiler ABI info
Detecting C compiler ABI info - done
Check for working C compiler: D:/Software/w64devkit/bin/cc.exe - skipped
Detecting C compile features
Detecting C compile features - done
ocv_init_download: OpenCV source tree is not fetched as git repository. 3rdparty resources will be downloaded from github.com by default.
Detected processor: AMD64
...

2.2 离线下载

编译过程中会自动从网上下载一些依赖文件,但由于国内网络环境可能会下载失败,这些需要我们自己下载并放入相应位置,详细信息可见D:\Software\OpenCV\opencv-4.10.0-builds\CMakeDownloadLog.txt

具体可参考:VScode搭建Opencv(C++开发环境)CMake编译OpenCV4.0时opencv_ffmpeg.dll等下载失败的解决思路总结

根据上述教程,下载文件并存放到对应位置,再点击 configure 再次查看这个日志文件:

#use_cache "D:/Software/OpenCV/opencv-4.10.0/sources/.cache"
#match_hash_in_cmake_cache "OCV_DOWNLOAD_ADE_HASH_3rdparty_ade_v0_1_2d_zip"
#match_hash_in_cmake_cache "OCV_DOWNLOAD_FFMPEG_HASH_3rdparty_ffmpeg_opencv_videoio_ffmpeg_dll"
#match_hash_in_cmake_cache "OCV_DOWNLOAD_FFMPEG_HASH_3rdparty_ffmpeg_opencv_videoio_ffmpeg_64_dll"
#match_hash_in_cmake_cache "OCV_DOWNLOAD_FFMPEG_HASH_3rdparty_ffmpeg_ffmpeg_version_cmake"

说明,所有因网络原因未下载的文件,都已通过离线下载并已正确放入对应的存放路径。

2.2 修改参数

如下图所示,CMake在编译时会有很多默认的参数,而有些我们是不需要的,需要修改为 OFF 即不要勾选:


具体为:

parametervaluedetail
CMAKE_BUILD_TYPERelease构建类型
BUILD_SHARED_LIBSON构建共享库(动态库)
BUILD_opencv_python_bindings_generatorOFF是否生成用于 Python 绑定的代码生成器
BUILD_opencv_java_bindings_generatorOFF是否生成用于 Java 绑定的代码生成器
BUILD_TESTSOFF是否编译 OpenCV 自带的测试套件
BUILD_PERF_TESTSOFF是否编译性能测试套件
WITH_IPPOFF是否启用 IPP 库(图像处理的优化库)
WITH_TBBOFF是否使用 TBB 库,以支持多线程并行计算
WITH_CUDAOFF是否启用 CUDA 支持
WITH_OPENCLOFF是否启用 OpenCL 支持
WITH_MSMFOFF是否使用 MSMF 来处理视频
CMAKE_CONFIGURATION_TYPESRelease;Debug构建的配置类型
OPENCV_EXTRA_MODULES_PATHD:\Software\OpenCV\opencv_contrib-4.10.0\modules指定 OpenCV Contrib 模块的路径

手动修改完编译参数后再次点击 Configure,然后最后点击 Generate

2.3 编译生成 install

进入刚刚编译存放的文件夹,作者为 D:\Software\OpenCV\opencv-4.10.0-builds,用 CMD 打开这个目录,输入以下命令:

mingw32-make -j8

-j8 是为了执行的更快,如果电脑性能不太好 -j4 也可以


大概需要30分钟左右,再使用如下命令完成最后的步骤:

mingw32-make install



此时,会生成一个 install 目录,作者的为:D:\Software\OpenCV\opencv-4.10.0-builds\install

3、测试运行

项目框架:

在这里插入图片描述
CMakeLists.txt 文件内容如下:

cmake_minimum_required(VERSION 3.0)
project(OpenCVTest)

# 指定OpenCV安装目录
set(OpenCV_DIR "D:\\Software\\OpenCV\\opencv-4.10.0-builds\\install")  # 将此路径替换为你的OpenCV安装路径

# 查找OpenCV库
find_package(OpenCV REQUIRED)

# 设置包含路径
include_directories(${OpenCV_INCLUDE_DIRS})

# 添加源文件
add_executable(OpenCVTest main.cpp)

# 链接OpenCV库
target_link_libraries(OpenCVTest ${OpenCV_LIBS})

这个配置好后,在 VSCode 中 右击该文件并选择 Configure All Projects,就会生成 build 文件夹。

main.cpp 文件内容如下:

#include <opencv2/opencv.hpp>
#include <iostream>

int main() {
    cv::Mat image = cv::Mat::zeros(300, 300, CV_8UC3);
    cv::putText(image, "Hello, OpenCV", cv::Point(50, 150), cv::FONT_HERSHEY_SIMPLEX, 1, cv::Scalar(255, 255, 255), 2);
    cv::imshow("Test", image);
    cv::waitKey(0);
    return 0;
}

运行方式如下:

编译安装OpenCV 3.2和OpenCV_contrib的步骤如下: 1. 首先,下载OpenCV 3.2的源代码和OpenCV_contrib的扩展模块源代码。可以从OpenCV的官方网站或GitHub上获取这些源代码。 2. 解压下载的OpenCV 3.2源代码文件和OpenCV_contrib源代码文件,并将它们分别放置在不同的目录中。 3. 在终端中打开一个新的命令窗口,并导航到OpenCV的源代码目录。 4. 创建一个新的目录,用于保存编译后的OpenCV库文件。建议在源代码目录之外的某个位置创建此目录。 5. 在终端中输入以下命令来设置编译选项和安装路径: ``` cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/path/to/opencv_libs \ -D OPENCV_EXTRA_MODULES_PATH=/path/to/opencv_contrib/modules \ /path/to/opencv_source ``` 其中,`/path/to/opencv_libs`是你创建的用于保存库文件的目录路径,`/path/to/opencv_contrib/modules`是OpenCV_contrib源代码的路径,`/path/to/opencv_source`是OpenCV源代码的路径。 6. 输入以下命令编译和安装OpenCV库文件: ``` make -j4 sudo make install ``` 这将会使用4个线程(可根据你的机器性能进行调整)进行编译,并将编译后的文件安装在指定的安装路径中。 7. 安装完成后,可以在指定的安装路径中找到生成的OpenCV库文件。在你的项目中,应该设置正确的头文件和库文件路径来使用OpenCV。 这些是基本的步骤来编译和安装OpenCV 3.2和OpenCV_contrib。请注意,在编译和安装过程中,可能会遇到依赖问题或其他错误,这可能需要进一步的配置和处理。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_leoatliang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值