VScode搭建Opencv(C++开发环境)
VScode配置Opencv
- 一、 软件版本
- 二 、下载软件
- 2.1 MinGw下载
- 2.2 Cmake下载
- 2.3 Opencv下载
- 三、编译
- 3.1 cmake-gui
- 3.2 make
- 3.3 install
- 四、 VScode配置
- 4.1 launch.json
- 4.2 c_cpp_properties.json
- 4.3 tasks.json
- 五、测试
一、 软件版本
cmake :cmake-3.27.2-windows-x86_64
MinGw:版本:8.1.0-release-posix-seh-rt_v6-rev0
Opencv:版本:4.5.5
二 、下载软件
2.1 MinGw下载
MinGw下载地址
选择 mingw-w64

往下拉选择下载这个

下载该文件,下载后解压,然后记住位置。为了方便,我把它改名为MinGw。(这里是MinGw软件)
添加环境变量,可以直接 win+Q 搜索 “环境变量”
然后在环境变量中,找到 path ,这里就是添加环境变量的地方。

添加环境变量。我这里MinGw的位置是:F:/MinGw
所以我们添加的环境变量是:F:/MinGw/bin
然后 ctrl+R ,输入cmd,调出 cmd命令窗口。
输入: gcc -v

显示这样,就说明MinGw安装配置完成。
2.2 Cmake下载
cmake下载地址
cmake-3.27.2-windows-x86_64.zip 这个版本

下载完后,和刚才的过程一样,解压生成一个文件夹。放在安装文件的目录下
然后进入bin目录下 双击cmake_gui.exe

我这里的路径是:
C:\Install\cmake-3.27.2-windows-x86_64\bin
我们继续添加环境变量:C:\Install\cmake-3.27.2-windows-x86_64\bin
然后,然后 ctrl+R ,输入cmd,调出 cmd命令窗口。
输入: cmake -version

2.3 Opencv下载
OpenCV下载地址

下载 4.5.5 windows版,然后直接解压 exe文件到指定路径即可。最好是建立在一个 OpenCV文件夹下。

三、编译
这里我要解释一下,Opencv本来是可以直接应用在vs里的,但是vs太重,不方便,相比之下,使用vscode更加轻量和方便,而且有很多的插件可以让我们定制化。因此我们选用vscode配置opencv。
但是vscode没办法直接使用opencv,我们需要把opencv的源文件进行编译,然后才能使用。这也是我们要用到cmake的原因。下面我们要使用cmake编译opencv的源文件。
3.1 cmake-gui

Where is the source code: 这里使用opencv目录下的source目录
Where to build the binaries: 这里是编译后的文件的放置目录
一般教程都放到opencv/build/x64/mingw
(注:这里的mingw是由我们自己创建的空文件夹)。

这里选择你自己的gcc.exe 和 g++.exe

这里意思是选择c 和 cpp 文件的编译工具,c我们用gcc.exe.cpp我们用g++.exe。
路径就是MinGw/bin/ 下的
继续 finish,会开始下载我们需要的东西。一些文件什么的。
执行过程中消息框会出现一堆红色信息,最后显示Configure done,是正常的。如果执行时中断,则存在其他问题。
(这里是借鉴了一位前辈的经验。)
如果没有 ”科学上网“ 的话,会有一些配置下载不了,我们需要手动下载。
在执行完后,把关于python的都给取消勾选。勾选BUILD_opencv_world,WITH_OPENGL和BUILD_EXAMPLES,不勾选WITH_IPP、WITH_MSMF和ENABLE_PRECOMPILED_HEADERS(如果有的话),CPU_DISPATCH选空。

3.2 make
到这里,该配置的也都完成了,需要去用编译生成。
ctrl+R,输入cmd进入命令行模式:
进入刚刚创建生成的mingw文件夹
cd C:\Install\OpenCV\opencv455\opencv\build\x64\mingw
执行命令: minGW32-make -j 4
在这里代开powershell


(-j 4 是为了执行的更快,如果你电脑配置可以,你甚至可以 -j 8)
然后静静等待……
中途可能会因为某些不知名原因出错,
这里插入一个错误解决方案
如下是错误信息:
fatal error: opencv2/gapi.hpp: No such file or directory #include <opencv2/gapi.hpp>
问题:
在对OpenCV4.6.0在安装过程中进行make编译时,遇到了 “opencv2/gapi.hpp: No such file or directory” 问题,引起这个问题的原因是因为在 /opencv4.6.0/samples/cpp/CMakelists.txt 文件中没有添加 opencv_gapi 指令,就导致了在编译过程中编译器找不到这个文件便会报错。如下图所示为具体报错提示:

解决策略:
进入到 C:\Install\OpenCV\opencv455\opencv\sources\samples\cpp/CMakelists.txt 文件目录下,打开 CMakelists.txt 文件,在其中添加 opencv_gapi 指令,具体添加如下图所示:


3.3 install
没有出错的话,我们就继续在该目录输入命令:
minGW32-make install
这样会生成一个install目录。至此,皇天不负有心人,我们终于编译完成!
然后我们继续添加两个环境变量:
第一个path是:C:\Install\OpenCV\opencv455\opencv\build\x64\vc15\bin
第二个path是:C:\Install\OpenCV\opencv455\opencv\build\x64\mingw\bin


安装完成的界面

四、 VScode配置
主要配置3个json
4.1 launch.json
(自行配置的属性: miDebuggerPath)
{"version": "0.2.0","configurations": [{"name": "opencv debuge","type": "cppdbg","request": "launch","program": "${workspaceFolder}\\Debugger\\${fileBasenameNoExtension}.exe",//上面这个Debugger是我自己定义的,为了方便放置生成的exe文件"args": [],"stopAtEntry": false, //这里如果为 false,则说明调试直接运行。(反之则停止)"cwd": "${workspaceFolder}","environment": [],"externalConsole": true,//是否调用外部cmd"MIMode": "gdb","miDebuggerPath": "F:\\MinGw\\bin\\gdb.exe",//自己进行设置"setupCommands": [{"description": "为 gdb 启用整齐打印","text": "-enable-pretty-printing","ignoreFailures": false}],"preLaunchTask": "opencv3.5.2"}]
}
4.2 c_cpp_properties.json
includePath 的第一个不用动,后面的要设置成自己的路径。
{"configurations": [{"name": "win","includePath": ["${workspaceFolder}/**","F:/opencv/build/x64/mingw/install/include","F:/opencv/build/x64/mingw/install/include/opencv2"],"defines": [],"compilerPath": "F:MinGw/bin/g++.exe","cStandard": "c11","cppStandard": "c++17","intelliSenseMode": "${default}"}],"version": 4
}
4.3 tasks.json
{"version": "2.0.0","tasks": [{"type": "shell","label": "opencv3.5.2","command": "F:/MinGw/bin/g++.exe","args": ["-g","${file}","-o","${workspaceFolder}\\Debugger\\${fileBasenameNoExtension}.exe",//上面这个Debugger是我自己定义的,为了方便放置生成的exe文件"F:/opencv/build/x64/mingw/bin/libopencv_world452.dll","-I","F:/opencv/build/x64/mingw/install/include","-I","F:/opencv/build/x64/mingw/install/include/opencv2",],"options": {"cwd": "F:/MinGw/bin"},"problemMatcher": ["$gcc"],"group": {"kind": "build","isDefault": true}}]
}
五、测试
刚才文件中的Debugger文件夹我们要创建好。里边会放置自动生成的exe文件。
exe文件执行需要依赖文件。我们还要把依赖文件放到该文件夹中,这样生成exe文件的时候才能调用该依赖而不出错。没有该依赖的话,就无法生成exe文件。
找到该依赖文件:
F:\opencv\build\x64\MinGw\install\x64\mingw\bin
里有两个ddl文件:
这两个DDL文件非常重要,在上面的地址中找到,然后拷贝
到 工作目录中的 Debugger 目录中即可。否则程序可能生成失败。
**
libopencv_world452.dll
opencv_videoio_ffmpeg452_64.dll
**
读者也去相似的目录去寻找,然后把该文件复制到Debugger目录下。

然后创建测试文件:(调用摄像头)
如果读者有opencv基础,可以自行测试。我提供一个测试摄像头的cpp文件。
test.cpp
#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main()
{VideoCapture cap(0);Mat img;while (1){cap >> img;if (img.empty())break;namedWindow("img", WINDOW_NORMAL);imshow("img", img);if (27 == waitKey(20))break;}return 0;
}
按F5进行运行
能调用摄像头就说明大功告成 !
嫌麻烦的不想自己编译的,可以用已经编译好的,参见链接:
参照
相关文章:
VScode搭建Opencv(C++开发环境)
VScode配置Opencv 一、 软件版本二 、下载软件2.1 MinGw下载2.2 Cmake下载2.3 Opencv下载 三、编译3.1 cmake-gui3.2 make3.3 install 四、 VScode配置4.1 launch.json4.2 c_cpp_properties.json4.3 tasks.json 五、测试 一、 软件版本 cmake :cmake-3.27.2-windows-x86_64 Mi…...
Redis高可用:哨兵机制(Redis Sentinel)详解
目录 1.什么是哨兵机制(Redis Sentinel) 2.哨兵机制基本流程 3.哨兵获取主从服务器信息 4.多个哨兵进行通信 5.主观下线和客观下线 6.哨兵集群的选举 7.新主库的选出 8.故障的转移 9.基于pub/sub机制的客户端事件通知 1.什么是哨兵机制…...
Hadoop小结(上)
最近在学大模型的分布式训练和存储,自己的分布式相关基础比较薄弱,基于深度学习的一切架构皆来源于传统,我总结了之前大数据的分布式解决方案即Hadoop: Why Hadoop Hadoop 的作用非常简单,就是在多计算机集群环境中营…...
ORA-600 ksuloget2 恢复----惜分飞
客户在win 32位的操作系统上调至sga超过2G,数据库运行过程中报ORA-600 ksuloget2错误 Thread 1 cannot allocate new log, sequence 43586 Checkpoint not complete Current log# 1 seq# 43585 mem# 0: D:\ORACLE\ORADATA\ORCL\REDO01.LOG Fri Aug 04 14:57:02 2023 Errors i…...
NLP的tokenization
GPT3.5的tokenization流程如上图所示,以下是chatGPT对BPE算法的解释: BPE(Byte Pair Encoding)编码算法是一种基于统计的无监督分词方法,用于将文本分解为子词单元。它的原理如下: 1. 初始化:将…...
【宝藏系列】一文讲透C语言数组与指针的关系
【宝藏系列】嵌入式 C 语言代码优化技巧【超详细版】 文章目录 【宝藏系列】嵌入式 C 语言代码优化技巧【超详细版】👨🏫前言1️⃣指针1️⃣1️⃣指针的操作1️⃣2️⃣关于指针定义的争议1️⃣3️⃣对教材错误写法的小看法 2️⃣指针和数组的区别2️⃣…...
Jenkins+Jmeter集成自动化接口测试并通过邮件发送测试报告
一、Jenkins的配置 1、新增一个自由风格的项目 2、构建->选择Excute Windows batch command(因为我是在本地尝试的,因此选择的windows) 3、输入步骤: 1. 由于不能拥有相同的jtl文件,因此在每次构建前都需要删除jtl…...
clickhouse入门
clickhouse 1 课程介绍 和hadoop无关,俄罗斯,速度快3 介绍&特点 1 列式存储 在线分析处理。 使用sql进行查询。列式存储更适合查询分析的场景。新增时候有一个寻址的过程。更容易进行压缩行式存储。增删改查都需要的时候。2 DBMS功能 包括ddl,d…...
中间件: ElasticSearch的安装与部署
文档地址: https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html 单机部署 创建用户: useradd es chown -R es /opt/soft/ mkdir -p /var/log/elastic chown -R es /var/log/elastic mkdir -p /tmp/elastic chown -R es /tmp…...
LabVIEW模拟化学反应器的工作
LabVIEW模拟化学反应器的工作 近年来,化学反应器在化学和工业过程领域有许多应用。高价值产品是通过混合产品,化学反应,蒸馏和结晶等多种工业过程转换原材料制成的。化学反应器通常用于大型加工行业,例如酿酒厂公司饮料产品的发酵…...
Python基础语法入门(第二十三天)——正则表达式
正则表达式是一种文本模式,用于匹配字符串,它是由字符和特殊字符组成的模式。正则表达式可以用于验证、搜索、替换和提取字符串。其能够应用于各种编程语言和文本处理工具中,如Python、Java、JavaScript等。 正则表达式在线测试工具…...
山西电力市场日前价格预测【2023-08-20】
日前价格预测 预测明日(2023-08-20)山西电力市场全天平均日前电价为341.71元/MWh。其中,最高日前电价为367.66元/MWh,预计出现在20: 30。最低日前电价为318.47元/MWh,预计出现在04: 15。 价差方向预测 1: 实…...
C++中function,bind,lambda
c11之前,STL中提供了bind1st以及bind2nd绑定器 首先来看一下他们如何使用: 如果我们要对vector中的元素排序,首先会想到sort,比如: void output(const vector<int> &vec) {for (auto v : vec) {cout <&l…...
跟着美团学设计模式(感处)
读了着篇文章之后发现真的是,你的思想,你的思维是真的比比你拥有什么技术要强的。 注 开闭原则 开闭原则(Open-Closed Principle)是面向对象设计中的基本原则之一,它的定义是:一个软件实体应该对扩展开放…...
2023/8/19 小红书 Java 后台开发面经
项目都做了些什么,怎么实现的用Redis实现了什么,Redis是单线程的吗,Redis是单线程的为什么快,IO多路复用模型具体实现,持久化怎么实现的为什么用Kafka,架构是什么样的,Broker、Topic、Partition…...
基于traccar快捷搭建gps轨迹应用
0. 环境 - win10 虚拟机ubuntu18 - i5 ubuntu22笔记本 - USB-GPS模块一台,比如华大北斗TAU1312-232板 - 双笔记本组网设备:路由器,使得win10笔记本ip:192.168.123.x,而i5笔记本IP是192.168.123.215。 - 安卓 手机 1.…...
【深度学习-图像识别】使用fastai对Caltech101数据集进行图像多分类(50行以内的代码就可达到很高准确率)
文章目录 前言fastai介绍数据集介绍 一、环境准备二、数据集处理1.数据目录结构2.导入依赖项2.读入数据3.模型构建3.1 寻找合适的学习率3.2 模型调优 4.模型保存与应用 总结人工智能-图像识别 系列文章目录 前言 fastai介绍 fastai 是一个深度学习库,它为从业人员…...
Debian10: 安装nut服务器(UPS)
UPS说明: UPS的作用就不必讲了,我选择是SANTAKTGBOX-850,规格为 850VA/510W,可以满足所需,关键是Debian10自带了驱动可以支持,免去安装驱动,将UPS通过USB线连接服务器即可,如下图所示…...
神经网络基础-神经网络补充概念-47-动量梯度下降法
概念 动量梯度下降法(Momentum Gradient Descent)是一种优化算法,用于加速梯度下降的收敛速度,特别是在存在高曲率、平原或局部最小值的情况下。动量法引入了一个称为“动量”(momentum)的概念,…...
C++11并发与多线程笔记(13) 补充知识、线程池浅谈、数量谈、总结
C11并发与多线程笔记(13) 补充知识、线程池浅谈、数量谈、总结 1、补充一些知识点1.1 虚假唤醒:1.2 atomic 2、浅谈线程池:3、线程创建数量谈: 1、补充一些知识点 1.1 虚假唤醒: notify_one或者notify_al…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地
借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
Unity | AmplifyShaderEditor插件基础(第七集:平面波动shader)
目录 一、👋🏻前言 二、😈sinx波动的基本原理 三、😈波动起来 1.sinx节点介绍 2.vertexPosition 3.集成Vector3 a.节点Append b.连起来 4.波动起来 a.波动的原理 b.时间节点 c.sinx的处理 四、🌊波动优化…...
AGain DB和倍数增益的关系
我在设置一款索尼CMOS芯片时,Again增益0db变化为6DB,画面的变化只有2倍DN的增益,比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析: 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
