Windows上VSCode中配置MinGW、C++和手动自编译安装OpenCV(详细图文教程)

Windows上VSCode中配置MinGW、C++和手动自编译安装OpenCV(详细图文教程)
在这里插入图片描述

💪 专业从事且热爱图像处理,图像处理专栏更新如下👇:
📝《图像去噪》
📝《超分辨率重建》
📝《语义分割》
📝《风格迁移》
📝《目标检测》
📝《暗光增强》
📝《模型优化》
📝《模型实战部署》
📝《图像配准融合》
📝《数据集》
📝《高效助手》
📝《C++》
📝《Qt》


在这里插入图片描述

本教程是在电脑上已经安装了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库。

欢迎学者留言讨论,看到会第一时间回复。

感谢您阅读到最后!😊总结不易,多多支持呀🌹 点赞👍收藏⭐评论✍️,您的三连是我持续更新的动力💖

关注下面「视觉研坊」,获取干货教程、实战案例、技术解答、行业资讯!

Read more

【Linux篇章】穿越网络迷雾:揭开 HTTP 应用层协议的终极奥秘!从请求响应到实战编程,从静态网页到动态交互,一文带你全面吃透并征服 HTTP 协议,打造属于你的 Web 通信利刃!

【Linux篇章】穿越网络迷雾:揭开 HTTP 应用层协议的终极奥秘!从请求响应到实战编程,从静态网页到动态交互,一文带你全面吃透并征服 HTTP 协议,打造属于你的 Web 通信利刃!

本篇摘要 本篇将介绍何为HTTP协议,以及它的请求与答复信息的格式(请求行,请求包头,正文等),对一些比较重要的部分来展开讲解,其他不常用的即一概而过,从静态网页到动态网页的过渡,最后底层基于TCP实现简单的HTTP服务器的代码编写构建一个简单的网页(包含对应的跳转,重定向,动态交互等功能),采取边讲解http结构边用代码形成效果展示的形式进行讲解,望有助! 欢迎拜访:点击进入博主主页 本篇主题:探秘HTTP应用层那些事儿! 制作日期:2025.07.21 隶属专栏:点击进入所属Linux专栏 本文将要介绍的内容的大致流程图如下: 一· 认识HTTP * 在互联网世界中, HTTP(HyperText Transfer Protocol, 超文本传输协议) 是一个至关重要的协议。 它定义了客户端(如浏览器) 与服务器之间如何通信, 以交换或传输超文本(如 HTML 文档) 。 * HTTP 协议是客户端与服务器之间通信的基础。 * 客户端通过 HTTP 协议向服务器发送请求, 服务器收到请求后处理并返回响应。 HTTP 协议是一个无连接、

By Ne0inhk
前端很简单?你怕是没见过凌晨4点前端的崩溃现场!

前端很简单?你怕是没见过凌晨4点前端的崩溃现场!

说句扎心的:因为他们只看见了「页面」,没看见「工程」 说在前面 不知道你有没有被问过一句话: " 前端不就是写写页面吗?" " HTML + CSS + JS,不就那点东西?" " 感觉前端比后端简单多了吧?" 说实话,每个前端几乎都被这样“温柔地鄙视”过。 有时候你懒得解释,有时候你解释了,对方一句话就给你堵死: " 反正看起来挺简单的。" 问题来了—— 为什么这么多人,真的觉得前端很简单? 一、因为前端「看起来」太直观了 这是第一个,也是最致命的原因。 前端干的活,全都暴露在用户眼前: * 页面能不能点 * 动画顺不顺 * 滚动卡不卡 * 手机上会不会崩 结果就导致一个错觉: " 我能看懂页面 = 我能干前端" 但你发现没有—

By Ne0inhk
基于Canvas和Web Audio API的交互式烟花动画网页游戏

基于Canvas和Web Audio API的交互式烟花动画网页游戏

一个基于 Canvas 和 Web Audio API 的交互式烟花动画网页 目录 1. 整体架构 2. HTML 结构 3. CSS 样式 4. JavaScript 核心模块 5. 用户交互 6. 性能优化 7. iOS 适配 8. 文件依赖 一、整体架构 ┌─────────────────────────────────────────────────────────────┐ │ HTML 结构 │ ├─────────────────────────────────────────────────────────────┤ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │ │ │ SVG 图标 │ │ Canvas容器 │ │ 控制面板/菜单 │ │ │ └─────────────┘ └─────────────┘ └─────────────────────┘ │ ├──────────────────────────────────────────────────────

By Ne0inhk

ollama v0.17.0 更新:OpenClaw 一键自动安装、Web 搜索支持、全新 Context 动态分配与 Tokenizer 性能大幅优化!

2026 年 2 月 24 日,Ollama 发布了全新的 v0.17.0 版本。这一次更新可谓意义重大,不仅引入了全新的 OpenClaw 自动化集成与安装能力,还针对核心 Tokenizer 性能、VRAM 动态上下文分配、系统配置迁移逻辑、Web 搜索插件 等功能进行了深层次优化。这是一次面向 AI 模型本地化与云端融合、性能与易用性双提升的版本升级。 本文将全面解析 Ollama v0.17.0 的更新亮点、底层代码变化及其背后的设计逻辑,帮助开发者和高级用户快速理解这一版本的重要意义。 一、版本概览 版本号: v0.17.0 发布日期: 2026 年 2 月 24 日

By Ne0inhk