💪 专业从事且热爱图像处理,图像处理专栏更新如下👇:
📝《图像去噪》
📝《超分辨率重建》
📝《语义分割》
📝《风格迁移》
📝《目标检测》
📝《暗光增强》
📝《模型优化》
📝《模型实战部署》
📝《图像配准融合》
📝《数据集》
📝《高效助手》
本教程是在电脑上已经安装了VSCode基础上讲解,如果没有安装VSCode的学者,自行先安装一下。
目录
一、MinGW安装
1.1 为什么先安装MinGW
在 Windows 上运行 C++ 程序时,安装 MinGW 是为了提供开发和编译环境,因为 Windows 本身并不内置 GNU 工具链或 C++ 编译器。
MinGW(Minimalist GNU for Windows)是一套免费的编译器工具集合,它包含了 GCC(GNU Compiler Collection)的 Windows 版本,以及一些 Unix 工具,使得你可以在 Windows 上编译和运行 C、C++ 等语言的程序。
编译 C/C++ 代码: Windows 默认没有 C++ 编译器,而 MinGW 提供了 GCC 编译器,能够编译 C 和 C++ 代码。
跨平台兼容性: MinGW 提供了类似于 Linux 的工具链和编译器,让你可以在 Windows 上运行一些 Unix/Linux 系统中的工具和程序。对于熟悉 Unix 开发环境的开发者来说,MinGW 是一种熟悉且方便的工具。
轻量和开放源代码: MinGW 是一个轻量级的编译器工具链,它不依赖庞大的运行时库,并且遵循开源协议,方便使用和扩展。
便捷的集成开发: MinGW 易于与多种 IDE(如 Code::Blocks、Eclipse)集成,便于开发者直接在 IDE 中编写、编译、调试 C++ 代码。
关于MinGW的解释,讲得较好的,参考其它文章:MinGW解释
1.2 MinGW安装包下载
MinGW安装包下载方法我推荐两种,随意选择下面一种都行,见下下面两小节。
1.2.1 官网下载
MinGW的官网地址:MinGW官网
MinGW包官网下载的具体位置:Home / Toolchains targetting Win64 / Personal Builds / mingw-builds / 8.1.0 / threads-posix / seh
实际网页中的位置见下:
1.2.2 github下载
安装包的下载我推荐到github上拉取,地址为:MinGW_github
打开后根据自己的电脑属性选择版本,见下:
我自己Windows电脑上的下载版本见下:
下载解压后的样子见下:
1.3 添加环境变量
添加环境变量按照下面步骤操作,后续还需要添加环境变量,方法同此小节。
将MinGW文件夹下的bin路径添加到环境变量中。
1.4 测试MinGW是否安装成功
在终端输入下面命令:
g++--version
成功的话会输出版本信息,见下:
二、OpenCV包
2.1 OpenCV包下载
下载OpeCV的官网地址为:OpenCV
OpenCV包有很多版本,学者根据自己情况自行选择。
下载好的文件见下:
对.exe文件进行解压,解压后的文件见下:
2.2 添加环境变量
将OpenCV包文件夹下的bin路径添加到环境变量中,见下:
将路径:D:\APP\OpenCV_4.10.0\opencv\build\x64\vc16\bin下的opencv_videoio_ffmpeg4100_64.dll,opencv_world4100.dll,opencv_world4100d.dll三个文件复制到C:\Windows\System32路径下:
三、CMake安装
3.1 CMake包下载
CMake官网下载地址为:CMake
打开网址后下载方法见下:
下载解压后的样子见下:
3.2 添加环境变量
将CMake文件夹下的bin路径添加到环境变量中:
3.3 测试CMake是否安装成功
在终端输入下面测试命令:
cmake --version
输出类似下面的版本信息则说明安装成功:
四、编译和构建
4.1 CMake配置和生成构建文件
在这个过程中,通过CMake配置生成Makefile文件。具体描述如下:
配置(Configuration):CMake 读取项目的 CMakeLists.txt 文件,解析其中的指令,配置项目的构建环境。它会根据用户的指定(如生成目标平台、编译器等),生成适合该平台的构建文件。
生成(Generation):根据配置,CMake 生成对应的构建系统文件,例如 Makefile(用于 MinGW 或其他支持 Make 的编译工具链),或者是 Visual Studio 的 .sln 解决方案文件。
4.1.1 创建Makefile存放位置
在oepncv路径D:\APP\OpenCV_4.10.0\opencv\build\x64下手动新建一个MinGW文件夹,用于保存生成的
MakeFile文件,见下:
4.1.2 CMake配置
在上面3.1中安装好CMake的基础上,启动CMake,用管理员身份运行cmake-gui.exe,见下:
添加OpenCV文件夹路径下的sources文件夹和MinGW文件夹路径,见下:
路径添加好后点击配置按钮,见下:
将MinGW中的gcc.exe和g++.exe路径添加到对应配置选项中,见下:
点击Finish
下面开始在指定的/OpenCV_4.10.0/opencv/build/x64/MinGW路径中生成相关文件:
等待一段时间后停止生成,下面有几个地方要勾选,见下:
补:如果没有BUILD_opencv_world,可以手动添加,添加方法见下:
下面是继续勾选的选项:
将CPU_ DISPATCH选空,见下:
点击Configure重新配置:
4.1.3 报错
在上面配置过程中,多数情况下会报错,主要是因为有些文件及时开了梯子也没正常下载,此时就需要手动下载,下载好后同原文件名复制到指定路径中,见下:
在OpenCV文件夹中创建的MinGw文件夹中找到CMakeDownloadLog.txt文件,里面有下载失败文件的下载链接:
将链接复制到浏览器或者迅雷中下载,我下载时就将开头为http,结尾为dll的链接下载:
下载好后将下载文件重命名,名称用下载失败的文件名,见下:
上面都下载好后重新配置,直到没有报错,见下:
4.1.4 生成
点击CMake界面的Generate按钮:
上面配置和生成好的makefile文件见下:
4.2 构建编译
使用生成的构建文件(如 Makefile),实际编译和链接项目中的源代码,生成可执行文件或库。这一步骤涉及编译源代码、链接库文件以及生成最终的可执行文件或库,是整个 CMake 构建流程中的重要环节。
构建步骤的具体作用:
编译:将源代码文件(如 .cpp、.c)编译成目标文件(如 .o、.obj)。
链接:将目标文件与库文件(如 OpenCV 库)链接,生成最终的可执行文件或动态链接库(.dll)。
并行构建:通过 -j 选项指定并行线程数,可以显著加快大型项目的构建速度,尤其是在多核处理器上。
终端中进入到OpenCV_4.10.0\opencv\build\x64\MinGW路径下,输入构建编译命令:
mingw32-make.exe -j 12
命令解析:
mingw32-make.exe:MinGW 提供的 make 工具,用于处理 Makefile 中定义的构建规则。
-j 12:表示使用 12 个并行线程进行编译,以加快构建速度。
4.3 安装
将构建好的项目文件(如可执行文件、动态/静态库、头文件等)从编译生成的目录复制到指定的安装路径。这个过程通常遵循 Makefile 中定义的安装规则,并包括以下步骤:
复制文件:将编译生成的文件(例如可执行文件、库文件、头文件等)复制到预定义的系统路径或用户指定的安装路径。通常会复制到系统路径(如 /usr/local 或 C:/Program Files)或开发环境路径下的某个目录中。
配置环境:可能会更新某些环境变量或路径(如 PATH、LD_LIBRARY_PATH)以便系统能够正确找到可执行文件或库文件。
创建目录结构:根据项目的结构,在安装目录中创建合适的目录,如 bin、lib、include 等,并将相关文件放置在对应目录中。
设置权限:在某些系统上,可能会为安装的文件设置适当的访问权限。
这个过程通常在开发完成后用于部署或准备分发可执行版本,因此可以方便其他开发者或用户使用已编译的程序或库。
在终端使用下面命令安装:
mingw32-make.exe install
安装成功后会在OpenCV_4.10.0\opencv\build\x64\MinGW路径下生成一个install文件夹,里面就是安装好的相关文件,见下:
需要将install文件夹下的bin路径添加到系统环境变量中,见下:
由于我添加的环境变量太多报了一个错,我重新用了个变量名链接到环境变量中,具体添加方法见下:
换种方法将路径赋值到一个变量中,见下:
将系统变量添加到Path中:
到这一步,自编译OpenCV准备好了,下面是在VSCode中配置编译好的OpenCV。
五、VSCode中配置OpenCV
5.1 测试代码
新建一个项目工程,用VSCode打开,创建一个.cpp脚本,将下面代码复制进去,作为测试OpenCV的代码:
#include<iostream>#include<opencv2/opencv.hpp>usingnamespace std;usingnamespace cv;intmain(){// 指定图片路径
string path ="Images/0.bmp";
cv::Mat img =imread(path);// 读取图像// 显示图像imshow("Display Image", img);// imshow("Display Image", test);// 等待按键按下,关闭窗口waitKey(0);return0;}
5.2 c_cpp_properties.json文件配置
先点击.cpp脚本,用快捷键Ctrl+shift+P打开搜索栏输入:C/C++ Edit Configurations(UI)
打开后选择编译器路径和导入头文件路径:
下面是其它参数可以保持默认:
这些配置好的参数在c_cpp_properties.json文件中查看,见下:
5.3 tasks.json文件配置
创建一个tasks.json文件来告诉VS Code如何构建(编译)程序。该任务将调用g++编译器基于源代码创建可执行文件。先选中脚本.cpp文件, 按快捷键Ctrl+Shift+P调出命令面板,输入tasks,选择“Tasks:Configure Default Build Task”:
选择“C/C++: g++.exe build active file”:
打开tasks.json文件后,需要自己手动修改的地方见下:
完整的tasks.json文件内容见下:
5.4 launch.json文件配置
这里主要是为了在.vscode文件夹中产生一个launch.json文件,用来配置调试的相关信息。点击菜单栏的Debug–>Start Debugging:
选择C++(GDB/LLDB)
创建好launch.json文件后,自动生成的内容只有两行,其它内容需要自己填补,我这里提供内容,学者在我提供内容基础上需要修改的地方见下:
launch.json文件内容见下:
{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387"version":"0.2.0","configurations":[{"name":"(gdb) Launch",// "preLaunchTask": "g++.exe build active file",//调试前执行的任务,就是之前配置的tasks.json中的label字段"preLaunchTask":"C/C++: g++.exe","type":"cppdbg",//配置类型,只能为cppdbg// "label": "C/C++: g++.exe build active file","request":"launch",//请求配置类型,可以为launch(启动)或attach(附加)"program":"${fileDirname}\\${fileBasenameNoExtension}.exe",//调试程序的路径名称"args":[],//调试传递参数"stopAtEntry":true,// "cwd": "${workspaceFolder}","cwd":"${fileDirname}","environment":[],"externalConsole":true,//true显示外置的控制台窗口,false显示内置终端"MIMode":"gdb","miDebuggerPath":"F:/APP/MinGW/mingw64/bin/gdb.exe","setupCommands":[{"description":"Enable pretty-printing for gdb","text":"-enable-pretty-printing","ignoreFailures":true}],// "preLaunchTask": "g++.exe build active file",// "internalConsoleOptions": "neverOpen"// "preLaunchTask": "build", // Ensure build task runs before launch"internalConsoleOptions":"neverOpen"}]}
5.5 测试OpenCV是否配置成功
上面配置都弄好后,运行5.1中的测试脚本,随便读入一张图像,如果能正常显示图像,恭喜!你在VSCode中配置OpenCV成功了!
六、总结
此博文我疏通了在Windows上VSCode中从编译到配置OpenCV的整个流程。此教程参考了网上多篇博文后总结的教程,中间有很多坑,特别是在配置和生成Makefile文件过程,不同电脑在这个过程会出现各种问题,多磨一下也能编译成功。
如果自己电脑编译实在通过不了,可以直接使用其他人大佬已经编译好的OpenCV,关于怎么使用其他人编译好的OpenCV库,见我下一篇博文,VSCode中配置并快速使用第三方OpenCV库。
欢迎学者留言讨论,看到会第一时间回复。
感谢您阅读到最后!😊总结不易,多多支持呀🌹 点赞👍收藏⭐评论✍️,您的三连是我持续更新的动力💖
关注公众号「视觉研坊」,获取干货教程、实战案例、技术解答、行业资讯!
版权归原作者 视觉研坊 所有, 如有侵权,请联系我们删除。