Ubuntu 20.04下配置VSCode以支持OpenCV库开发

Ubuntu 20.04下配置VSCode以支持OpenCV库开发

      • 1. 安装OpenCV库
        • 安装OpenCV(推荐使用APT安装)
        • 或者从源码安装OpenCV(可选)
      • 2. 安装VSCode的C++扩展
      • 3. 配置`c_cpp_properties.json`
      • 4. 编写代码并测试
      • 5. 配置`tasks.json`(编译OpenCV程序)
      • 6. 运行程序
      • 7. 安装其他依赖(可选)
      • 8. 使用CMake(可选)
      • 总结

在VSCode中配置OpenCV需要确保OpenCV库已正确安装,并在VSCode中配置相关路径和编译选项。以下是详细步骤:


1. 安装OpenCV库

在Ubuntu 20.04上,可以通过以下命令安装OpenCV库:

安装OpenCV(推荐使用APT安装)
sudo apt update
sudo apt install libopencv-dev

安装完成后,OpenCV库的头文件和库文件会分别存放在/usr/include/opencv4/usr/lib/x86_64-linux-gnu目录下。

或者从源码安装OpenCV(可选)

如果需要最新版本的OpenCV,可以从源码编译安装。具体步骤可以参考OpenCV官方文档。


2. 安装VSCode的C++扩展

确保VSCode已安装C/C++扩展:

  1. 打开VSCode。
  2. 进入扩展市场(Ctrl+Shift+X)。
  3. 搜索“C/C++”并安装Microsoft提供的C/C++扩展。

3. 配置c_cpp_properties.json

为了让VSCode正确识别OpenCV库的头文件,需要配置c_cpp_properties.json文件:

  1. 打开VSCode,进入你的C++项目。
  2. 按下Ctrl+Shift+P,输入“C/C++: Edit Configurations (UI)”并选择。
  3. 在打开的界面中,找到“Include Path”设置。
  4. 添加OpenCV库的头文件路径(例如/usr/include/opencv4)。

或者,可以直接编辑.vscode/c_cpp_properties.json文件,内容如下:

{"configurations": [{"name": "Linux","includePath": ["${workspaceFolder}/**","/usr/include/opencv4"  // OpenCV头文件路径],"defines": [],"compilerPath": "/usr/bin/g++","cStandard": "c11","cppStandard": "c++17","intelliSenseMode": "gcc-x64"}],"version": 4
}

4. 编写代码并测试

创建一个简单的C++文件(如main.cpp),测试OpenCV库是否配置成功:

#include <opencv2/opencv.hpp>
#include <iostream>int main() {cv::Mat image = cv::imread("test.jpg");  // 读取图片if (image.empty()) {std::cerr << "Could not open or find the image!" << std::endl;return -1;}cv::imshow("Display window", image);  // 显示图片cv::waitKey(0);  // 等待按键return 0;
}

5. 配置tasks.json(编译OpenCV程序)

为了编译OpenCV程序,需要配置tasks.json文件:

  1. 打开VSCode,按下Ctrl+Shift+P,输入“Tasks: Configure Task”并选择。
  2. 选择“Create tasks.json file from template” -> “Others”。
  3. 编辑生成的tasks.json文件,内容如下:
{"version": "2.0.0","tasks": [{"label": "build","type": "shell","command": "g++","args": ["-std=c++17","-I/usr/include/opencv4",  // OpenCV头文件路径"${file}","-o","${fileDirname}/${fileBasenameNoExtension}","-lopencv_core",           // 链接OpenCV库"-lopencv_imgcodecs","-lopencv_highgui"],"group": {"kind": "build","isDefault": true},"problemMatcher": ["$gcc"],"presentation": {"reveal": "always"}}]
}
  1. 保存后,按下Ctrl+Shift+B即可编译当前文件。

6. 运行程序

编译成功后,在终端中运行生成的可执行文件:

./main

如果程序能够正确显示图片(如test.jpg),说明OpenCV库配置成功。


7. 安装其他依赖(可选)

如果编译时提示缺少其他依赖库,可以通过以下命令安装:

sudo apt install build-essential cmake libgtk2.0-dev pkg-config

8. 使用CMake(可选)

如果你的项目使用CMake管理,可以创建一个CMakeLists.txt文件,内容如下:

cmake_minimum_required(VERSION 3.10)
project(OpenCVTest)find_package(OpenCV REQUIRED)add_executable(main main.cpp)
target_link_libraries(main ${OpenCV_LIBS})

然后在VSCode中配置CMake工具:

  1. 安装CMake扩展(搜索“CMake Tools”并安装)。
  2. 打开项目文件夹,VSCode会自动检测CMakeLists.txt并生成构建配置。

总结

通过以上步骤,你可以在VSCode中成功配置OpenCV库,并编写、编译和运行使用OpenCV的C++代码。关键步骤包括:

  1. 安装OpenCV库。
  2. 配置c_cpp_properties.json以包含OpenCV头文件路径。
  3. 配置tasks.json以支持编译和链接OpenCV库。

如果遇到问题,可以检查OpenCV库的安装路径是否正确,并确保所有依赖库已安装。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/72376.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

io学习----->标准io

思维导图&#xff1a; 一.io的作用 io是实现对文件的操作&#xff0c;把运行结果存到文件中&#xff0c;读取文件的数据&#xff0c;方便后期查询。 二.io的概念 io是指系统 和外部设备或用户之间的数据交互 I:input 表示数据从外部设备输入到内存中&#xff1b; O:output…

使用消息队列怎样防止消息重复?

大家好&#xff0c;我是君哥。 使用消息队列时&#xff0c;我们经常会遇到一个可能对业务产生影响的问题&#xff0c;消息重复。在订单、扣款、对账等对幂等有要求的场景&#xff0c;消息重复的问题必须解决。 那怎样应对重复消息呢&#xff1f;今天来聊一聊这个话题。 1.三…

005 公网访问 docker rocketmq

文章目录 创建自定义网络创建NameServer容器创建Broker容器正式开始启动 Nameserver 容器启动 Broker 容器并关联 Nameserverdocker exec -it rmqbroker vi /etc/rocketmq/broker.conf检查 namesrv 解析检查 Broker 注册状态Nameserver 日志Broker 日志检查容器日志手动指定 Br…

解决Docker Desktop启动后Docker Engine stopped问题

一、问题描述 当我们更新了Docker Desktop后,在重新打开就显示【Docker Engine stopped(Docker引擎已经停止)】,无法正常使用Docker,如下图所示: 二、问题分析 1、检查电脑主板的CPU是否开启虚拟化; 2、需检查Docker所需的功能是否开启; 3、检查WSL是否匹配; Docker的…

MongoDB—(一主、一从、一仲裁)副本集搭建

MongoDB集群介绍&#xff1a; MongoDB 副本集是由多个MongoDB实例组成的集群&#xff0c;其中包含一个主节点&#xff08;Primary&#xff09;和多个从节点&#xff08;Secondary&#xff09;&#xff0c;用于提供数据冗余和高可用性。以下是搭建 MongoDB 副本集的详细步骤&am…

C++STL---<limits>

C <limits> 头文件&#xff1a; <limits> 头文件是 C 标准库中用于获取各种数据类型的数值范围、精度等信息的工具。它通过模板类 std::numeric_limits 提供了对基本数据类型&#xff08;如 int、float、double 等&#xff09;的详细属性查询功能。通过 std::nume…

蓝桥杯自我复习打卡

总复习&#xff0c;打卡1. 一。排序 1。选段排序 太可恶了&#xff0c;直接全排输出&#xff0c;一个测试点都没过。 AC 首先&#xff0c;这个【l,r】区间一定要包含p,或者q&#xff0c;pq一个都不包含的&#xff0c;[l,r]区间无论怎么变&#xff0c;都对ans没有影响。 其次&…

Flutter_学习记录_实现列表上拉加载更多的功能

可以用ScrollController组件来实现这样列表上拉加载更多的功能: 1. 定义变量 在StatefulWidget 的组件内&#xff0c;添加三个属性&#xff1a; // 滚动视图的控制器final ScrollController _scrollController ScrollController();// 是否已显示了上拉加载中bool _isShowM…

【Linux】【网络】不同子网下的客户端和服务器通信其它方式

【Linux】【网络】不同子网下的客户端和服务器通信其它方式 那么&#xff0c;在 NAT 环境下&#xff0c;应该如何让内网设备做为服务器&#xff0c;使内网设备被外部连接&#xff1f; 1 多拨 部分运营商&#xff0c;支持在多个设备上&#xff0c;通过 PPPoE 登录同一个宽带账…

《Python百练成仙》31-40章(不定时更新)

第卅一章 函数结丹def开紫府 罗酆山的鬼门关吞吐着猩红的变量阴风&#xff0c;每个风眼都涌动着作用域混乱的灵力乱流。叶军手握薛香遗留的丹田玉简&#xff0c;玉简表面浮现出残缺的函数符文&#xff1a; def 凝聚金丹(灵气):道基 灵气 * 0.618print(金丹品质) # 作用域外变…

六十天前端强化训练之第一天到第七天——综合案例:响应式个人博客项目

欢迎来到编程星辰海的博客讲解 目录 前言回顾 HTML5与CSS3基础 一、知识讲解 1. 项目架构设计&#xff08;语义化HTML&#xff09; 2. 响应式布局系统&#xff08;Flex Grid&#xff09; 3. 样式优先级与组件化设计 4. 完整响应式工作流 二、核心代码示例 完整HTML结…

测试的BUG分析

在了解BUG之前,我们要先了解软件测试的生命周期,因为大多数BUG都是在软件测试的过程中被发现的 软件测试的生命周期 在了解 软件测试的生命周期 之前,我们要先了解 软件的生命周期 ,虽然他们之间只差了两个字,但是差距还是很大的 首先是 软件生命周期 ,这个是站在 软件 的角…

【洛谷贪心算法题】P1094纪念品分组

该题运用贪心算法&#xff0c;核心思想是在每次分组时&#xff0c;尽可能让价格较小和较大的纪念品组合在一起&#xff0c;以达到最少分组的目的。 【算法思路】 输入处理&#xff1a;首先读取纪念品的数量n和价格上限w&#xff0c;然后依次读取每件纪念品的价格&#xff0c;…

[STM32]从零开始的STM32 BSRR、BRR、ODR寄存器讲解

一、前言 学习STM32一阵子以后&#xff0c;相信大家对STM32 GPIO的控制也有一定的了解了。之前在STM32 LED的教程中也教了大家如何使用寄存器以及库函数控制STM32的引脚从而点亮一个LED&#xff0c;之前的寄存器只是作为一个引入&#xff0c;并没有深层次的讲解&#xff0c;在教…

SQL分组问题

下列为电商公司用户访问时间数据 统计某个用户连续的访问记录&#xff0c;如果时间间隔小于60s&#xff0c;就分为一组 id ts 1001 17523641234 1001 17523641256 1002 17523641278 1001 17523641334 1002 17523641434 1001 17523641534 1001 17523641544 1002 17523…

3月2日 C++日常习题测试一答案

C测试题答案与讲解 一、填空题答案及讲解 答案&#xff1a;const 讲解&#xff1a;在 C 中&#xff0c;const关键字用于定义常量&#xff0c;一旦定义&#xff0c;其值不能被修改。例如const int num 10;&#xff0c;这里的num就是一个常量。 答案&#xff1a;3 讲解&…

2W8000字 LLM架构文章阅读指北

❝ 大模型架构专栏已经更新了30多篇文章。完整的专栏内容欢迎订阅&#xff1a; LLM 架构专栏 1、LLM大模型架构专栏|| 从NLP基础谈起 2、 LLM大模型架构专栏|| 自然语言处理&#xff08;NLP&#xff09;之建模 3、 LLM大模型架构之词嵌入&#xff08;Part1&#xff09; 3、 LLM…

SP导入智能材质球

智能材质球路径 ...\Adobe Substance 3D Painter\resources\starter_assets\smart-materials 放入之后就会自动刷新

网络原理----TCP/IP(3)

核心机制七----延时应答 默认情况下&#xff0c;接收方都是在收到数据报的第一时间&#xff0c;就返回ack&#xff0c;但是可以通过延时返回ack的方式来提高效率&#xff0c;理论上不是100%提高效率&#xff0c;但还是有一定帮助的。 因为如果接收数据的主机⽴刻返回ACK应答,…

MacBook Pro使用FFmpeg捕获摄像头与麦克风推流音视频

FFmpeg查看macos系统音视频设备列表 ffmpeg -f avfoundation -list_devices true -i "" 使用摄像头及麦克风同时推送音频及视频流: ffmpeg -f avfoundation -pixel_format yuyv422 -framerate 30 -i "0:1" -c:v libx264 -preset ultrafast -b:v 1000k -…