Ubuntu16.04 opencv环境搭建(C++)

news2024/11/23 17:40:12

Ubuntu下vscode跑opencv程序环境搭建。

目录

1 ubuntu查看opencv版本

2 下载opencv包

3 依赖配置

4 进入安装包内执行

5 配置环境变量

6 VScode配置-下载c++扩展

7 编译运行helloworld

8 在vscode中配置opencv环境

9 运行结果


1 ubuntu查看opencv版本

pkg-config --modversion opencv

2 下载opencv包

 官网下载地址:https://opencv.org/releases/

3 依赖配置

sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libvtk7-dev libjpeg-dev libtiff5-dev libopenexr-dev libtbb-dev

4 进入安装包内执行

mkdir build
cd build
cmake 
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -D CMAKE_INSTALL_PREFIX=/usr/local/opencv4.5.1 ..
make -j4
sudo make install

执行结果:

5 配置环境变量

gedit ~/.bashrc

加入:

#opencv4.8.1
export PKG_CONFIG_PATH=/usr/local/opencv4.8.1/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/opencv4.8.1/lib

后执行

source ~/.bashrc

6 VScode配置-下载c++扩展

7 编译运行helloworld

在vscode中创建c++文件,helloworld,在编译运行后将自动生成json文件,要运行opencv,需要修改这几个json文件。他们的作用是类似于形成

g++ -std=c++11 main.cpp -o main `pkg-config --cflags --libs opencv`

的编译命令。

8 在vscode中配置opencv环境

需要引入opencv库到编译环境中,修改位置:

c_cpp_properties.json中:

加入安装opencv库的位置。

task.json中:

加入库的链接。上面这行等同于分别链接下面这些库,因为有.pc文件。

gemini对pc文件的介绍:

`pc` 文件(pkg-config 文件)在引入三方库时扮演着至关重要的角色,它提供了有关库的信息,以便编译器和链接器可以找到并正确使用它。

`.pc` 文件通常包含以下信息:

- 库的名称和版本
- 库的描述
- 库的头文件和库文件的位置
- 库的依赖关系(其他必需的库)
- 库的编译和链接标志

当您使用 `pkg-config` 命令时,它会读取 `.pc` 文件并提取这些信息,然后将其传递给编译器和链接器。这简化了库的编译和链接过程,因为您不必手动指定所有这些信息。

例如,如果您要使用 OpenCV 库,您可以使用以下命令:


  g++ -std=c++11 main.cpp `pkg-config --cflags --libs opencv`

`pkg-config` 命令将读取 OpenCV 的 `.pc` 文件并提取编译和链接 OpenCV 所需的所有信息。然后,它会将这些信息传递给 `g++` 编译器,以便它可以正确编译和链接您的代码。

**注意:**

- `.pc` 文件通常安装在 `/usr/lib/pkgconfig` 目录中。
- 您可以使用 `pkg-config --list-all` 命令查看系统上安装的所有 `.pc` 文件。
- 如果您找不到特定库的 `.pc` 文件,您可能需要手动指定编译和链接标志。

这里可能遇到问题,看起来正常的代码编译报错,是因为vscode没配置c++11。

OpenCV 4.8.1 **不支持** C++98 标准

OpenCV 4.8.1 要求使用 C++11 或更高版本。这是因为 OpenCV 4.8.1 使用了 C++11 中引入的许多特性,例如:

- 智能指针(`std::unique_ptr` 和 `std::shared_ptr`)
- 范围 for 循环
- lambda 表达式

如果您需要在 C++98 上使用 OpenCV,则需要使用较旧的版本,例如 OpenCV 3.4.x。

**注意:**

即使您能够在 C++98 上编译 OpenCV 4.8.1,也可能会遇到运行时错误,因为 OpenCV 4.8.1 依赖于 C++11 的某些特性。

两个方案,用老版本和配置vscode使用c++11编译。

9 运行结果

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

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

相关文章

根据模板和git commit自动生成日·周·月·季报

GitHub - qiaotaizi/dailyreport: 日报生成器 GitHub - yurencloud/daily: 程序员专用的日报、周报、月报、季报自动生成器! config.json: { "Author": "gitname", "Exclude": ["update:", "add:", "…

Flink实现实时异常登陆监控(两秒内多次登陆失败进行异常行为标记)

Flink实现异常登陆监控(两秒内多次登陆失败进行异常行为标记) 在大数据处理领域,Apache Flink 是一个流行的开源流处理框架,能够高效处理实时数据流。在这篇博客中,我们将展示如何使用 Apache Flink 从 MySQL 中读取数…

LIO-EKF: 运行数据UrbanNav与mid360设备详细教程

一、代码连接 代码下载连接: YibinWu/LIO-EKF: Maybe the simplest LiDAR-inertial odometry that one can have. (github.com) 编译步骤: cd srcgit clone gitgithub.com:YibinWu/LIO-EKF.gitcatkin_makesource devel/setup.bash 运行步骤: …

opencv进阶 ——(八)图像处理之RMBG模型AI抠图

BRIA.AI团队于HuggingFace开源了一个基于ISNet背景移除模型RMBG-1.4,它可以有效对前景与背景进行分离。RMBG-1.4在精心构建的数据集上训练而来,该数据包含常规图像、电商、游戏以及广告内容,该方案达到了商业级性能,但仅限于非商业…

React-组件通信

组件通信 概念:组件通信就是组件之间的数据传递,根据组件嵌套关系的不同,有不同的通信方法 父传子 基础实现 实现步骤: 1.父组件传递数据-在子组件标签上绑定属性 2.子组件接收数据-子组件通过props参数接收数据 props说明 1.…

AI科技,赋能企业财务管理

AI技术已深入千行百业,其实际任务解决能力愈发凸显和强劲。正如乔布斯所强调“技术不是为工程师而生,而是为应用而生”。 胜意科技深度集成业内领先技术,将AI融入到实际的财务工作流中,与OCR、RPA等智能技术组合式输出&#xff0c…

面试后总没回音,要去问面试结果吗?

知识星球(星球名:芯片制造与封测技术社区,星球号:63559049)里的学员问:面试一家公司的PIE,这家公司各方面我都很满意,但是面试后到现在都一周了,也没回音,要微…

@Value 读取环境变量配置

在项目开发过程中,有必要使用一些灰色规则(即仅用于开发使用过程中的逻辑控制变量)。 比如,本地开发中,一些业务逻辑需要调用第三方代码,但又在本地调不通,怎么办。只能通过 if(本地开发) {mock…

Facebook的创新实验室:人工智能与新技术探索

Facebook作为全球领先的社交媒体平台之一,一直在不断探索和应用最新的技术来改善用户体验、推动创新和拓展业务边界。其创新实验室更是探索人工智能(AI)和新技术的前沿,为未来的社交媒体发展开辟了新的可能性。本文将深入探讨Face…

《广告数据定量分析》第3版读书笔记之统计原理

1.点估计与区间估计:可用于求指标误差区间;(不常用) (1)总体比例的置信区间: 通过样本数据计算的比例,估计总体的对应比例的取值范围。主要适用于用户转化漏斗各环节的转化率估计,比如点击率、点击下载率、下载安装率、安装激活率等。 我们可以得到总体百分比的一个…

iOS组件化 方案 实现

iOS组件化 组件化的原因现在流行的组件化方案方案一、url-block (基于 URL Router)方案二、protocol调用方式解读 方案三、target-action调用方式解读 gitHub代码链接参考 组件化的原因 模块间解耦模块重用提高团队协作开发效率单元测试 当项目App处于…

例子:Triton + TensorRT-LLM

Deploy an AI Coding Assistant with NVIDIA TensorRT-LLM and NVIDIA Triton | NVIDIA Technical Blog https://github.com/triton-inference-server/tutorials/blob/main/Conceptual_Guide/Part_1-model_deployment/README.md 1. 想用onnx-runtime来做推理backend&#xff1…

React + Taro 项目 实际书写 感受

之前我总结了部分react 基础 根据官网的内容 以及Taro 框架的内容 今天我试着开始写了一下页面和开发 说一下我的感受 我之前写的是vue3 今天是第一次真正根据需求做页面开发 和逻辑功能 代码的书写 主体就是开发了这个页面 虽说这个页面 很简单 但是如果你要是第一次写 难说…

Facebook的算法揭秘:如何塑造我们的信息

在当今数字化时代,Facebook已经成为人们日常生活中不可或缺的一部分。其信息流算法不仅决定着我们在平台上看到的内容,还对我们的观点、行为和体验产生了深远的影响。本文将深入探讨Facebook的算法运作方式,以及它对我们信息获取和社交行为的…

神器!!Python热重载调试【送源码】

在 Python 开发的路上,调试是我们不可避免的一环。 而今天推荐的开源项目Reloadium ,让你在不重启程序的情况下实现代码的即时更新和调试。 🔄 Reloadium 功能亮点: 1. 热重载魔法: Reloadium 不仅仅能够实现代码的…

Android高通 12/13 录屏流程代码位置

需求如下图 实现系统录屏功能 frameworks/base/packages/SystemUI/src/com/android/systemui/screenrecord 涉及代码 ScreenRecordDialog # startBtn RecordingService # startRecording# stopRecording ScreenMediaRecorder # start # end #save 1、点击开始录屏framewo…

停车场车位引导系统方案升级实施步骤流程是什么,有什么注意事项

停车场车位引导系统是一种现代化的停车管理系统,它通过实时监测车位占用情况,并向驾驶员提供准确的空闲车位导航信息,从而提高停车场的使用效率和用户体验。随着城市交通的快速发展和车辆数量的不断增加,停车场车位引导系统已成为…

【数据分享】中国科技统计年鉴Excel版(1991-2023年)

大家好!今天我要向大家介绍一份重要的中国科技统计数据资源——《中国科技统计年鉴》。这份年鉴涵盖了从1991年到2023年中国科技统计全面数据,并提供限时免费下载。 数据介绍 在数字化时代的浪潮中,数据的重要性日益凸显。对于研究人员、政…

AutoSQT 2024汽车软件质量与测试峰会开启注册 | 智能汽车软件如何卷出差异化?

在汽车行业向智能化、网联化转型的大趋势下,软件在汽车系统中扮演着越来越核心的角色。基于“软件定义汽车”的行业共识,各主机厂正在不断押注软件开发,以实现品牌差异化竞争。 例如,大众集团正在开发下一代汽车操作系统和应用软…

Spring MVC 应⽤分层

什么是应用分层 引用分层是一种软件开发思想 将应用程序分为N个层次每个层次负责各个职责 其中MVC是常见的设计模式这就是应用分层的具体体现 目前主流的开发方式是前后段分离后端开发工程师不再需要关注前端的实现,对此就需要分为表现层,数据层,业务逻…