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

视觉研坊 2024-10-16 09:05:01 阅读 61

在这里插入图片描述

💪 专业从事且热爱图像处理,图像处理专栏更新如下👇:

📝《图像去噪》

📝《超分辨率重建》

📝《语义分割》

📝《风格迁移》

📝《目标检测》

📝《暗光增强》

📝《模型优化》

📝《模型实战部署》

📝《图像配准融合》

📝《数据集》

📝《高效助手》


在这里插入图片描述

本教程是在电脑上已经安装了VSCode基础上讲解,如果没有安装VSCode的学者,自行先安装一下。

目录

一、MinGW安装1.1 为什么先安装MinGW1.2 MinGW安装包下载1.2.1 官网下载1.2.2 github下载

1.3 添加环境变量1.4 测试MinGW是否安装成功

二、OpenCV包2.1 OpenCV包下载2.2 添加环境变量

三、CMake安装3.1 CMake包下载3.2 添加环境变量3.3 测试CMake是否安装成功

四、编译和构建4.1 CMake配置和生成构建文件4.1.1 创建Makefile存放位置4.1.2 CMake配置4.1.3 报错4.1.4 生成

4.2 构建编译4.3 安装

五、VSCode中配置OpenCV5.1 测试代码5.2 c_cpp_properties.json文件配置5.3 tasks.json文件配置5.4 launch.json文件配置5.5 测试OpenCV是否配置成功

六、总结

一、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是否安装成功

在终端输入下面命令:

<code>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是否安装成功

在终端输入下面测试命令:

<code>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路径下,输入构建编译命令:

<code>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 等,并将相关文件放置在对应目录中。

设置权限:在某些系统上,可能会为安装的文件设置适当的访问权限。

这个过程通常在开发完成后用于部署或准备分发可执行版本,因此可以方便其他开发者或用户使用已编译的程序或库。

在终端使用下面命令安装:

<code>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的代码:

<code>#include <iostream>

#include <opencv2/opencv.hpp>

using namespace std;

using namespace cv;

int main() {

// 指定图片路径

string path = "Images/0.bmp";

cv::Mat img = imread(path); // 读取图像

// 显示图像

imshow("Display Image", img);

// imshow("Display Image", test);

// 等待按键按下,关闭窗口

waitKey(0);

return 0;

}

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文件内容见下:

<code>

{

// 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库。

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

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

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



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。