目录
1.下载OpenCV
2.安装OpenCV
前言
本篇博客主要讲解的是编译并使用OpenCV。OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,由Intel公司于1999年发起开发,并于2000年首次发布。它由一系列C函数和少量C++类构成,实现了图像处理和计算机视觉方面的众多通用算法。
下载OpenCV
OpenCV的官方链接如下:
OpenCV官网
https://opencv.org/releases/
除此之外我们还可以直接访问OpenCV在GitHub的仓库,本例子就不再进行讲解。而由于现在的OpenCV支持本地安装配置环境和使用CMake编译源码的两种方式,所以本篇博客将对这两种方式都进行讲解,对于刚刚入门学习OpenCV的读者可以直接参考本地安装的过程就像,而对于在使用OpenCV有配置要求的读者则可以参考使用CMake编译源码的方式进行配置。具体在官网的下载版本信息如下(Sources是源码编译,Windows是直接安装):

图1.下载OpenCV
由于后续会使用到CMake,具体还没有下载CMake的读者可以参考以下链接:
《高效工具实战指南:CMake构建工具》
https://blog.csdn.net/weixin_67035108/article/details/155361963?spm=1001.2014.3001.5501
安装OpenCV
本小节主要讲解如何安装OpenCV,即使用最简单的本地安装进行讲解。在我们下载好文件后双击该文件,即可弹出安装界面。在安装界面中我们需要选择OpenCV安装路径。

图2.选择OpenCV安装路径
选择安装路径以后,我们只需要等待下载完成即可。

图3.等待下载完成
下载完成后,我们可以在刚刚的指定的安装路径下找到相关文件。其中include文件夹是我们后续使用OpenCV需要导入的头文件,而x64文件夹中的bin文件夹和lib文件夹则是我们需要导入的动态链接库和静态链接库的路径 。

图4.直接安装OpenCV成功
使用CMake编译OpenCV
本小节主要讲解的是如何使用CMake构建工具编译OpenCV,这部分主要适用于需要手动配置OpenCV的读者,如果是初学者只需要参考安装OpenCV小节的内容即可。
我们打开CMake,在Whers is hte source cod文本框中输入下载的OpenCV源码位置,在 Where to buiild the binaries文本框中输入构建后的文件保存路径。博主是创建了一个OpenCVBuild文件夹进行保存,读者可以自己创建一个,选择好路径后再点击Configure按钮即可进行构建。
PS:源码路径下必须得有一个CMakLists文件,才能正确的识别并进行构建。

图5.设置CMake中文件路径
我们点击Configure按钮以后,需要选择生成工具以及位数。此处博主选择的是Visual Studio 17 2022和64位进行构建。选择好后点击Finish按钮即可。

图6.选择生成工具和位数
点击Finish按钮后,我们只需要等待构建进度完成即可。

图7.等待构建
构建完成以后会显示很多可进行调整的选项以及路径,对此哪些是必选项哪些是可选项以及博主有哪些建议调整的,可以参考下表进行选择:
| 类别 | 选项名称 | 建议操作 | 勾选的意义与说明 |
|---|---|---|---|
| 建议勾选 | WITH_OPENGL |
勾选 | 启用OpenGL支持。让imshow()等图像显示窗口使用硬件加速,在显示高分辨率图像或视频时更流畅 |
| 建议勾选 | WITH_PNG |
勾选 | 启用PNG图像格式支持。这是最常用的无损图像格式之一,必须支持 |
| 建议勾选 | WITH_TIFF |
勾选 | 启用TIFF图像格式支持。常用于专业图像处理和印刷领域 |
| 建议勾选 | WITH_WEBP |
勾选 | 启用WebP图像格式支持。这是一种现代的高压缩率图片格式 |
| 建议勾选 | WITH_OPENJPEG |
勾选 | 启用更好的JPEG 2000图像格式支持 |
| 按需勾选 | WITH_OPENMP |
建议勾选 | 启用OpenMP支持。实现多线程并行计算,能提升许多算法的处理速度。如果您的编译器(如Visual Studio)支持,建议开启 |
| 按需勾选 | WITH_TBB |
二选一 | 启用Intel TBB库支持,另一种高效的并行编程模型。与OpenMP功能类似,通常与OpenMP二选一即可 |
| 按需勾选 | WITH_QT |
按需 | 启用Qt支持。如果勾选,OpenCV的高级GUI窗口将使用Qt后端,功能更丰富(自带按钮、滑动条等)。适合开发带复杂界面的应用,需要提前安装Qt |
| 按需勾选 | WITH_VULKAN |
按需 | 启用Vulkan支持。用于跨平台的GPU加速计算。仅在进行高性能计算或图形学研究时需要考虑 |
| 按需勾选 | WITH_OPENNI2 |
按需 | 启用对OpenNI 2兼容的深度摄像头(如微软Kinect)的支持。只有连接了此类设备时才需要 |
表1.选项参考表
当我们设置完选项后点击Configure按钮即可。

图8.指定构建
如果选择了编译QT等其他选项,可能还需要指定Qt的路径。这里是CMake通过PATH检索到的QT路径,并不是QTCreator所在的的路径,如果有需要可以自行调整Qt的路径。

图9.调整相关路径
调整好路径以后,继续点击Configure按钮进行构建。等待构建结束看到Configuring done相关的文字代表以及构建成功。

图10.构建成功
构建成功以后,我们需要点击Generate按钮进行生成。可能有些读者电脑不存在例如ffmpeg等库,这时候CMake会从指示的链接中进行下载,这一步会比较耗时但是等待下载完成即可。

图11.等待下载相关库
构建完成以后,我们点击Generate按钮进行生成。当看到Generating done相关的文字的时候代表已经生成成功。

图12.点击Generate按钮生成
生成成功后,我们可以在刚刚指定的保存构建相关的路径下看到生成的文件。此处我们双击生成的后缀为sln文件以Visual Studio打开即可。

图13.以Visual Studio打开生成的sln文件
打开后我们需要选择编译的类型,此处博主是以Release x64进行编译,可以参考下图的左上角进行调整。而在右侧解决方案资源管理器中,我们右键ALL_BUILD然后点击生成,对整个项目进行构建并生成。

图14.右键ALL_BUILD点击生成
当生成完毕,我们再右健INSTALL后再点击生成。

图15.右健INSTALL点击生成
当我们看到生成成功相关字样后即代表OpenCV已经编译成功,可以开始使用了。

图16.编译OpenCV成功
编译成功后我们可以在保存构建相关文件的路径下找到install文件夹,该文件夹下保存的文件就是使用Visual Studio生成的最终文件。

图17.生成的最终文件路径
搭配Qt使用OpenCV
本篇博客中安装OpenCV和使用CMake编译OpenCV都是生成的MSVC的版本,所以Qt的构建工具也得是MSVC,具体的MinGW版本和MSVC并不通用,所以需要生成MinGW版本的OpenCV可以使用CMake进行生成。
本例子使用的是Qt6进行编写的,系统环境为Windows 64位,使用的是qmake构建,所以需要在生成的pro文件中添加OpenCV的路径,具体如下:
bash
INCLUDEPATH += E:/SummaryLib/OpenCV4.12.0_MSVC_Win/opencv/build/include
win32-msvc:LIBS += -LE:/SummaryLib/OpenCV4.12.0_MSVC_Win/opencv/build/x64/vc16/lib
win32-msvc:LIBS += -LE:/SummaryLib/OpenCVBuild/install/x64/vc17/lib
win32-msvc:CONFIG(release, debug|release): LIBS += -lopencv_world4120
win32-msvc:CONFIG(debug, debug|release): LIBS += -lopencv_world4120d
win32-msvc:QMAKE_POST_LINK += $$quote(cmd /c if exist "E:\\SummaryLib\\OpenCV4.12.0_MSVC_Win\\opencv\\build\\x64\\vc16\\bin\\opencv_world4120.dll" copy /Y "E:\\SummaryLib\\OpenCV4.12.0_MSVC_Win\\opencv\\build\\x64\\vc16\\bin\\opencv_world4120.dll" "$$OUT_PWD\\")
win32-msvc:QMAKE_POST_LINK += $$quote(cmd /c if exist "E:\\SummaryLib\\OpenCV4.12.0_MSVC_Win\\opencv\\build\\x64\\vc16\\bin\\opencv_world4120d.dll" copy /Y "E:\\SummaryLib\\OpenCV4.12.0_MSVC_Win\\opencv\\build\\x64\\vc16\\bin\\opencv_world4120d.dll" "$$OUT_PWD\\")
如果不太理解的也可以直接在GitHub下载示例:
OpenCV测试示例以及库
https://github.com/3020Xmy/OpenCVTest