一文解决VS Code安装、C++环境配置、OpenCV配置

2023-10-26

前言

   本文包括VScode安装C++环境配置以及OpenCV配置全过程。VS Studio配置OpenCV比较简单,可以直接使用OpenCV官网已有的用VS Studio编译器编译好的OpenCV库。但VS Code不能直接利用VS Studio编译好的OpenCV库,因此需要借助MinGW-64和CMake工具对OpenCV源码重新进行编译编译前提是C:\Users目录下不能包含中文,否则无法成功编译)。

一、资源下载

1、VS Code

⭐百度网盘是我自己下载的版本,与官网最新版本不一定一致。
   1)百度网盘下载:VSCodeSetup-x64-1.66.2.exe (提取码:ggec)
   2)官网下载:Visual Studio Code官网下载速度很慢,可以安装IDM,使用方法可参考下载外网资源加速
在这里插入图片描述

2、MinGW-w64

   1)百度网盘下载:x86_64-8.1.0-release-posix-seh-rt_v6-rev0.7z (提取码:2dis)
   2)官网下载:MinGW-w64离线包下载地址一定要是"seh"后缀的,千万别错了!!!
在这里插入图片描述

3、CMake

   1)百度网盘下载:cmake-3.9.0-rc3-win64-x64 .zip (提取码:h7tj)
   2)官网下载:CMake要选择二进制文件,即Binary distributions栏目
在这里插入图片描述

4、OpenCV

   1)百度网盘下载:opencv-4.5.5-vc14_vc15.exe (提取码:0hf7)
   2)官网下载:OpenCV
在这里插入图片描述

二、环境配置

1、VS Code安装

  双击.exe文件开始安装,同意此协议,点击下一步:
在这里插入图片描述
  选择安装路径,点击下一步:
在这里插入图片描述
  点击下一步:
在这里插入图片描述
  根据图中提示勾选,点击下一步:
在这里插入图片描述
  点击安装:
在这里插入图片描述

2、VS Code的C++配置

  选择喜欢的界面形式,点击Mark Done:
在这里插入图片描述
  按图中所示步骤安装C/C++C/C++ Extension PackC/C++ IntellisenseCode Runner插件:
在这里插入图片描述
  桌面新建一个test文件夹,再在VS Code界面点击Open Folder打开文件夹,进行简单测试:
在这里插入图片描述
  选择trust:
在这里插入图片描述
  点击左上角File --> New File --> 按ctrl+s保存文件名为hello.cpp,写一个测试代码:

#include<iostream>
using namespace std;
 
int main(){
    cout<<"Hello world!"<<endl;
    
    return 0;
}

  VS code每次修改代码都需要手动保存才能编译,否则会报错,这里设置一下自动保存:
在这里插入图片描述
  点击右上角三角形进行编译:
在这里插入图片描述
  这个地方报错,是因为VS Code只是一个编辑器,如果想正常运行C++程序还需要安装编译器。

3、MinGW-w64安装

  解压MinGW-w64压缩包,存在下图文件夹:
在这里插入图片描述
  将该文件夹的bin路径添加到环境变量中(添加到系统变量中):
在这里插入图片描述

  检查MinGW-w64是否安装成功,若成功则如下图所示:
在这里插入图片描述
  重启VS Code,再次运行程序成功:
在这里插入图片描述

4、OpenCV配置

  将opencv-4.5.5-vc14_vc15.exe解压到除C盘外的其他盘内(若是C盘,cmake 时很可能报错)
在这里插入图片描述
  在 opencv\build\x64 路径下新建一个文件夹(可自起,这里是 MinGW )
在这里插入图片描述

5、CMake安装

  将cmake-3.9.0-rc3-win64-x64解压,文件夹如图所示:
在这里插入图片描述
  将该文件夹下的bin文件路径添加到环境变量(添加到系统变量中):
在这里插入图片描述

  检查cmake是否安装成功:
在这里插入图片描述

6、生成MakeFiles

  进入D:\cmake-3.9.0-rc3-win64-x64\bin,先不要进行任何操作:
在这里插入图片描述
  在操作cmake-gui之前,如果没有翻过墙的话,先用记事本方式打开C:\Windows\System32\drivers\etc\hosts,在文件的末尾加上151.101.72.133 raw.githubusercontent.com因为cmake-gui会下载一些文件, 这些文件都在raw.githubusercontent.com上, 如果不修改一下hosts,许多文件很可能会下载失败)。(如果hosts文件修改后无法保存,则是因为电脑默认hosts权限为只读,在属性里修改hosts文件为可写即可成功保存,记得环境配置好之后把hosts属性改回去,以保护电脑安全性)。
在这里插入图片描述
在这里插入图片描述
  打开cmake-gui,选择OpenCV的源文件路径和MakeFiles保存路径(即之前新建的MinGW):
在这里插入图片描述
  点击Configure,弹窗配置如下,点击Next:
在这里插入图片描述
  选择前面安装的D:/mingw64/bin文件夹下的gcc.exe和g++.exe,点击Finsh
在这里插入图片描述
  -->耐心等待中。。。
  执行过程中消息框会出现一堆红色信息,最后显示Configure done,是正常的。显示Configure done后,勾选BUILD_ opencv_worldWITH_ OPENGLBUILD EXAMPLES不勾选WITH_IPPWITH_MSMFENABLE_PRECOMPILED_HEADERS (如果有的话),CPU_ DISPATCH选空。再次点击Configure
  -->耐心等待中。。。
  这次执行完后仍有错误如下:
在这里插入图片描述
  即使修改了hosts,仍然会有文件没有成功下载,这个时候需要手动下载它们。可以用浏览器访问下载链接,或者使用迅雷等下载器进行下载。在自创建的MinGW下的CMakeDownloadLog.txt文件中列出了所有丢失文件的下载链接,比如:

https://raw.githubusercontent.com/opencv/opencv_3rdparty/4d348507d156ec797a88a887cfa7f9129a35afac/ffmpeg/opencv_videoio_ffmpeg.dll

  一个个访问这些链接,下载后放到OpenCV源文件里.cache的相应子文件夹中替代原缓存文件(下载的文件重命名为相应地缓存文件名并删除原缓存文件)。这样从头到尾下载CMakeDownloadLog.txt中列出的所有丢失文件,之后,再次点击Configure,出现configure down之后点击Generate,显示Generate Done。
在这里插入图片描述

  如果MakeFiles文件成功生成,则CMakeDownloadLog.txt内容如下所示:
在这里插入图片描述

7、编译OpenCV

  使用 cmake 时要求安装 python3(版本没有限制,比2高就行),并且python 必须配好了环境变量。
  cmd到MakeFiles所在文件夹,执行如下命令:

mingw32-make -j 8

在这里插入图片描述
  如果报错可查阅编译报错解答,如果编译成功则执行如下命令完成装载:

mingw32-make install

在这里插入图片描述
  将D:\opencv\build\x64\MinGW\bin加入环境变量(添加到系统变量中):
在这里插入图片描述

8、VS Code配置

(1)launch.json配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  在生成的launch.json文件中复制一下代码(需要配置miDebuggerPath项,注意修改name、preLaunchTask的 opencv版本号):

{

    "version": "0.2.0",
    "configurations": [
        {
            "name": "opencv4.5.5 debuge",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": true,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "D:/mingw64/bin/gdb.exe",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": false
                }
            ],
            "preLaunchTask": "opencv4.5.5 compile task"
        }
    ]
}

(2)c_cpp_properties.json配置

  按快捷键crtl+shift+p,出现如下弹窗:
在这里插入图片描述  点击C/C++:Edit Confighrations(UI)进行如下配置:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
  配置完成会自动生成c_cpp_properties.json文件:
在这里插入图片描述

(3)task.json配置

  点击Terminal的Configure Tasks:
在这里插入图片描述
  出现如下弹窗,选择C/C++:g++.exe生成活动文件
在这里插入图片描述
  生成task.json文件:
在这里插入图片描述

(4)settings.json配置

  按ctrl+, 出现如下弹窗,输入code-runner:Executor Map,点击下方的 Edit in settings.json

点击 Edit in settings.json之后会生成settigs.json(该文件地址是:C:\Users\WCJ\AppData\Roaming\Code\User\settings.json),在生成的settings.json中复制如下代码(注意修改cpp项的地址和链接插件):

{
    "workbench.colorTheme": "Default Light+",
    "editor.suggest.snippetsPreventQuickSuggestions": false,
    "code-runner.runInTerminal": true,
    "files.autoSave": "afterDelay",
    "code-runner.executorMap": {

        "javascript": "node",
        "java": "cd $dir && javac $fileName && java $fileNameWithoutExt",
        "c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "cpp":"cd $dir && g++ $fileName -o $fileNameWithoutExt -I D:/opencv/build/include -L D:/opencv/build/x64/MinGW/bin  -l libopencv_world455 -l opencv_videoio_ffmpeg455_64 && $dir$fileNameWithoutExt",
        "objective-c": "cd $dir && gcc -framework Cocoa $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "php": "php",
        "python": "python -u",
        "perl": "perl",
        "perl6": "perl6",
        "ruby": "ruby",
        "go": "go run",
        "lua": "lua",
        "groovy": "groovy",
        "powershell": "powershell -ExecutionPolicy ByPass -File",
        "bat": "cmd /c",
        "shellscript": "bash",
        "fsharp": "fsi",
        "csharp": "scriptcs",
        "vbscript": "cscript //Nologo",
        "typescript": "ts-node",
        "coffeescript": "coffee",
        "scala": "scala",
        "swift": "swift",
        "julia": "julia",
        "crystal": "crystal",
        "ocaml": "ocaml",
        "r": "Rscript",
        "applescript": "osascript",
        "clojure": "lein exec",
        "haxe": "haxe --cwd $dirWithoutTrailingSlash --run $fileNameWithoutExt",
        "rust": "cd $dir && rustc $fileName && $dir$fileNameWithoutExt",
        "racket": "racket",
        "scheme": "csi -script",
        "ahk": "autohotkey",
        "autoit": "autoit3",
        "dart": "dart",
        "pascal": "cd $dir && fpc $fileName && $dir$fileNameWithoutExt",
        "d": "cd $dir && dmd $fileName && $dir$fileNameWithoutExt",
        "haskell": "runhaskell",
        "nim": "nim compile --verbosity:0 --hints:off --run",
        "lisp": "sbcl --script",
        "kit": "kitc --run",
        "v": "v run",
        "sass": "sass --style expanded",
        "scss": "scss --style expanded",
        "less": "cd $dir && lessc $fileName $fileNameWithoutExt.css",
        "FortranFreeForm": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "fortran-modern": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "fortran_fixed-form": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt",
        "fortran": "cd $dir && gfortran $fileName -o $fileNameWithoutExt && $dir$fileNameWithoutExt"
    },
    "window.zoomLevel": 1,
    "files.associations": {
        "iostream": "cpp",
        "ostream": "cpp"
    }
}


三、测试案例

1、测试代码

#include <iostream>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\opencv.hpp>
using namespace std;
using namespace cv;


int main()
{
    string path = "C:/Users/WCJ/Desktop/0402/01/0.bmp";
    cv::Mat img = imread(path);
    imshow("img",img);
    waitKey(0);
    return 0;
}

2、测试结果

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一文解决VS Code安装、C++环境配置、OpenCV配置 的相关文章

  • 使 minGW 控制台程序在没有控制台的情况下运行

    我在 MinGW 中制作了一个控制台程序 它执行网络和文件操作 然而 它是一个控制台程序 如何让它安静地运行 没有控制台 没有窗口 尝试这个 ShowWindow GetConsoleWindowHandle SW HIDE GetCons
  • 使用参数将数据插入access数据库

    我有以下方法将数据插入到访问数据库中 该方法工作正常 但如果我尝试插入包含我学到的单引号的文本 我确实会遇到问题 WebMethod public void bookRatedAdd string title int rating stri
  • 将 void* 作为函数调用而不声明函数指针

    我已经搜索过 但找不到任何结果 我的术语可能有问题 所以如果以前有人问过这个问题 请原谅我 我想知道是否有一种简单的方法可以调用void 作为 C 中的函数 无需首先声明函数指针 然后为函数指针分配地址 IE 假设要调用的函数是类型void
  • 初始化影子变量

    标准中是否有任何内容定义从它隐藏的变量初始化变量 例如 int i 7 int i i Visual Studio 2013 允许这样做而不发出警告并按预期工作 内在i变量是 7 然而 Clang 和 GCC 给我一个警告 关于从自身初始化
  • 提升解析器中的 Spirit 段错误

    我一直在尝试将我在本科编译器中编写的一些 lex 和 yacc 代码转换为精神代码以学习精神 我发现了一个我似乎无法弄清楚的段错误 我这样写了词法分析器 namespace lex boost spirit lex enum Tokens
  • 在 Windows 上实现堆栈跟踪 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 我正在为我正在编写的游戏实现一个崩溃报告工具 并且我想为该报告提供 相当 详细的本机堆栈跟踪 我已经在 GNU Linux 上实现
  • 是否可以将向量的一部分作为向量发送给函数? [复制]

    这个问题在这里已经有答案了 我想看看是否可以将向量的一部分传递给函数 以便它显示为函数的法线向量 更重要的是 我希望这可以在 O 1 的常数时间内完成 我不想迭代向量来创建一个新向量 事实上 我还希望在下面的示例中将新向量的大小更改为 40
  • 测试 WebApi 控制器时如何生成 Asp.net 用户身份

    我正在使用 Web API 2 在 web api 控制器中我使用过GetUserId使用 Asp net Identity 生成用户 ID 的方法 我必须为该控制器编写 MS 单元测试 如何从测试项目访问用户 ID 我在下面附上了示例代码
  • C# - 获取 GPU 的总使用百分比

    我正在向我的程序添加一些新功能 这些功能当前通过串行连接将 CPU 使用情况和 RAM 使用情况发送到 Arduino 请参阅this https create arduino cc projecthub thesahilsaluja cp
  • FormsAuthentication.SetAuthCookie() 是否需要重定向?

    检查用户的凭据并确认其良好后 我正在使用FormsAuthentication SetAuthCookie Username false 对用户进行身份验证 然后在母版页中我使用Page User Identity IsAuthentica
  • File.Delete 进程无法访问该文件,因为该文件正在被另一个进程使用

    public bool DownloadMp3File DownloadedMp3 mp3 WebClient client new WebClient string filePath bool wasDownload false try
  • 当无法处理指定的情况时,在 switch 语句中抛出异常

    假设我们有一个函数可以在 MVC 应用程序的系统中更改用户的密码 public JsonResult ChangePassword string username string currentPassword string newPassw
  • 如何在 if () 语句中声明变量? [复制]

    这个问题在这里已经有答案了 可能的重复 在 C 的条件或控制语句中声明和初始化变量 https stackoverflow com questions 1516919 declaring and initializing a variabl
  • 如何在网格视图中突出显示文本的结果? [复制]

    这个问题在这里已经有答案了 可能的重复 如何突出显示某个单词 https stackoverflow com questions 9546761 how can i highlight a word 我有一个网格视图和一个文本框 用于从列中
  • 绑定到外部库中基本方法的方法无法处理“之间”的新虚拟方法

    假设我有一个库 版本 1 0 0 包含以下内容 public class Class1 public virtual void Test Console WriteLine Library Class1 Test Console Write
  • OledbConnection.Dispose() 是否关闭连接? [复制]

    这个问题在这里已经有答案了 可能的重复 如果使用 using 子句 是否需要关闭 DbConnection https stackoverflow com questions 12033998 is there any need to cl
  • MDI 窗体中的子窗口对接

    我有一个 MDI 表单和其中的一些子表单 我将子窗体停靠到 MDI 窗口的不同区域 但是当任何子窗体失去焦点时 其他停靠的窗体将重新排列 由于混乱 我准备了一组图像来展示该行为 Image1 单击任何窗口之前 Image2 点击窗口2后 问
  • 将 tiff 像素长宽比更改为正方形

    我正在尝试对多页 tiff 文件执行条形码识别 但是 tiff 文件是从传真服务器 我无法控制 发送给我的 该服务器以非方形像素长宽比保存 tiff 这导致图像由于纵横比而被严重挤压 我需要将 tiff 转换为方形像素长宽比 但不知道如何在
  • 在 Blazor 中显示计时器

    我正在尝试在服务器端 Blazor 应用程序中显示倒计时器 我的代码同时使用 F 和 C 语言 该代码在某种程度上可以工作 但计时器永远不会按预期停止 并且计时器显示偶尔不会呈现所有数字 这是我第一次尝试 Blazor 服务器端应用程序 我
  • 为什么 typeof 函数在 C 中不起作用

    我使用GCC编译器 版本9 2 0 我想在 C 中使用 typeof 函数 但它会引发错误 错误 typeof 之前的预期表达式 如果您需要更多信息 请询问我 int a 5 double b the expected result is

随机推荐

  • Ubuntu 16.04 上 CUDA_10.0及cuDNN的安装

    GPU Geforce GTX1060 驱动版本 418 56 最开始打算装CUDA 10 1 nvidia与cuda需相匹配 但是在运行cuda run后出现的用户许可证信息有问题 如图 但是CUDA 10 1与驱动版本是相匹配的 也没有
  • 排序算法总结(长期更新)

    1 最基础的排序算法 1 冒泡排序 思想 每次使用交换的方式将剩余元素中较大的元素放到一端 直到剩余元素为0的时候排序结束 include
  • PCL读取显示点云的两种方式

    读取点云的两种方式 PCL提供了两种pcd点云读写方式 其中PCD Point Cloud Date 点云数据 对应的文件格式为 pcd 是 PCL官方指定格式 具有 ASCII 和 Binary 两种数据存储类型 其中 ASCII 格式的
  • snipaste便捷截图小工具

    Snipaste是一个简单但强大的截图工具 也可以让你将截图贴回到屏幕上 下载并打开Snipaste 按下F1来开始截图 再按F3 截图就在桌面置顶显示了 还可以将剪贴板里的文字或者颜色信息转化为图片窗口 并且将它们进行缩放 旋转 翻转 设
  • 原码 反码 补码 移码

    原码 反码 补码都是有符号定点数的表示方法 一个有符号定点数的最高位为符号位 0是正 1是负 反码 原码 除符号位外 每位取反 补码 反码 1 反码 补码 1 移码 补码符号位取反 原码就是这个数本身的二进制形式 正数的反码和补码都是和原码
  • cmake错误:“未定义的引用”,“未声明的引用”

    描述 在编译代码的时候 经常会出现 未声明的引用 和 未定义的引用 之类的错误 原因 这种情况一般在编译的过程是不会出现问题 在链接的过程会出现这些问题 未声明的引用一般是头文件引入错误 或者找不到头文件 未定义的引用应该是找不到函数的实现
  • omv5-gitlab/gitlab-ce deploy

    omv5 gitlab gitlab ce yml example version 3 6 services web image gitlab gitlab ce latest restart always environment GITL
  • AWS架构图更新2019 - 最强大的AWS架构设计工具

    需要设计您的Amazon Web Services AWS 架构 今天我想介绍一下如何使用Visual Paradigm的云架构设计软件绘制AWS架构图快速而有趣 他们提供世界上最简单 最强大的AWS架构设计工具 全套AWS符号 创建专业的
  • Python-装饰器详解

    装饰器 介绍 在Python中 装饰器是一种特殊的语法 用于修改或增强函数的功能 装饰器是Python的高级特性之一 它允许我们通过在不修改原函数代码的情况下 添加额外的功能或行为 装饰器是一个函数 它接受一个函数作为参数 并返回一个新的函
  • 构建工具Maven/Gradle

    Maven Maven项目对象模型 POM 可以通过一小段描述信息来管理项目的构建 报告和文档的项目管理工具软件 Maven 除了以程序构建能力为特色之外 还提供高级项目管理工具 由于 Maven 的缺省构建规则有较高的可重用性 所以常常用
  • 微信小程序之微信登录

    在开发微信小程序的时候 我们经常需要用到微信登录 通过wx的接口来获取微信用户的信息 然后存储到我们数据库来创建属于我们系统的用户信息 所以我们就要使用到wx login wx getUserProfile 这两个方法 wx login w
  • 向量点乘叉乘等理解和应用

    https baike baidu com item E5 90 91 E9 87 8F 1396519 fr aladdin 1 标量和矢量 2 1 2 3 2 4 6 2 4 6 2 1 2 3 2 矢量和矢量的加减 三角形定则解决向量
  • 程序员3年5年10年三个阶段

    第一阶段 三年 三年对于程序员来说是第一个门槛 这个阶段将会淘汰掉一批不适合写代码的人 这一阶段 我们走出校园 迈入社会 成为一名程序员 正式从书本上的内容迈向真正的企业级开发 我们知道如何团队协作 如何使用项目管理工具 项目版本如何控制
  • 奇偶剪枝算法

    奇偶剪枝是数据结构的搜索中 剪枝的一种特殊小技巧 现假设起点为 sx sy 终点为 ex ey 给定t步恰好走到终点 如图所示 竖走 横走 转弯 易证abs ex sx abs ey sy 为此问题类中任意情况下 起点到终点的最短步数 记做
  • 弱网使用教程

    Network Emulation for Windows Toolkit 1 下载安装包 默认安装 下载地址 https drive google com file d 1jvviwEDRx2UtmpUxe1 Sy94E3wBao5Ot
  • 基于51单片机的红外解码器

    1 简介 本红外解码器是以MCS 51系列AT89C512片机为核心 将红外传感器接收的信号解析出来 LCD1602显示屏将解码数据显示出来 2 总体原理图 硬件组成 单片机最小系统 LCD1602显示屏 IR红外接收器 系统电源 3 程序
  • 数据结构---n皇后问题

    n皇后问题 题目描述 JAVA实现 力扣提交代码 n皇后问题 题目描述 对于四皇后问题的解 放置一个皇后 棋盘被占据的解为 很明显 每行只能放置 且只能放置一个皇后 代码中 queen row 1 来实现的 一个完整的示例 放第一个皇后 放
  • 抖音将会输给快手?时间会证明一切

    为什么快手产品的主界面上没有设置频道分类 这样带来的用户体验真的好吗 在快手一个月之前的员工大会上 入职不久的新员工赵波提出了这个疑问 这个问题不只是他一个人的 之前官方的解答是 不意给用户设置标签是为了保持界面简洁 不对内容做过多的评判
  • i.MX6ULL - 从零开始移植uboot-imx_v2020.04_5.4.70_2.3.0

    i MX6ULL 从零开始移植uboot imx v2020 04 5 4 70 2 3 0 目录 i MX6ULL 从零开始移植uboot imx v2020 04 5 4 70 2 3 0 前言 1 环境搭建 2 NXP官方原版UBOO
  • 一文解决VS Code安装、C++环境配置、OpenCV配置

    前言 本文包括VScode安装 C 环境配置以及OpenCV配置全过程 VS Studio配置OpenCV比较简单 可以直接使用OpenCV官网已有的用VS Studio编译器编译好的OpenCV库 但VS Code不能直接利用VS Stu