ubuntu 22.04运行opencv4的c++程序遇到的问题

news2025/1/17 21:39:19

摘要:本文介绍一下在ubuntu系统中,运行一个最简单的opencv4程序都出问题的解决方法,并对其基本原理作简单阐述。解决问题的方法有很多,本文只提供其中一种。

opencv版本是4.2.0,ubuntu版本是20.04

查询opencv版本的指令是pkg-config --modversion opencv4,

pkg-config --modversion opencv4

注意命令最后的数字4要有,否则可能会出错。提示您Package opencv was not in the pkg-config --modversion opencv,错误信息回有4行,最后一行是No package 'opencv' found。

查询ubuntu版本的指令是

cat /proc/version

提示的信息有很多,有linux版本号,GCC,GNU以及ubuntu版本号,我们只关注ubuntu。提示信息是

20.04.1-Ubuntu SMP

在这样的编程环境下,编写C++代码,没想到会遇到很多的问题,就连编译一个最简单的程序都不可以,例如我们编译一下下面的一段代码。

源代码是官网的那个,注意,不同版本的程序要以官网为准。链接是Get Started - OpenCV

#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
using namespace cv;
int main()
{
    std::string image_path = "lambo.png";
    Mat img = imread(image_path, IMREAD_COLOR);

    imshow("Display window", img);
    int k = waitKey(0); // Wait for a keystroke in the window
    return 0;
}

如果您使用vscode编辑器直接debug,会提示您有一个错误,意思是找不到头文件。

“opencv2/core/core.hpp”: No such file or directory

我们的ubuntu下安装了opencv,即使您再次安装,会发现已经安装过了,不用更新了。

sudo apt install libopencv-dev

解决方法是在usr/include下创建一个快捷方式

sudo ln -s /usr/include/opencv4/opencv2 /usr/include

注意,运行这些命令前,您最好到图形化的界面下,到指定的目录看看,到底有没有这些文件夹。执行完命令后,您会发现,在usr/include目录下,创建了一个opencv2的快捷方式,其实这个文件夹就是在opencv4里面,但是系统会一直在include目录下来寻找,找不到,所以就提示了错误信息,现在我们做了一个快捷方式,那么系统就能找到了,就不再提示错误信息。按照这个分析,我们在图形化界面中,创建一个快捷方式也是可以用的。

完成以上步骤后,程序还是不能运行,如果您在vscode下面debug,仍然会提示有其他的错误信息。解决这些错误的方法有很多,花生没有一一验证,这里提供一个确保可以使用的方法:

解决思路:不用vscode来debug,而用CMakeLists.txt来解决,直接在命令行cmake即可

具体执行就是在c++源文件目录下新建一个txt文件,命名为CMakeLists.txt,然后在里面填写一些规定格式的信息,这个文件有很多讲究,包括第一行就必须有版本要求。set指令是我们需要的核心指令,hello.cpp是我们源代码的名字。

cmake_minimum_required(VERSION 3.16)
project( HELLO )
set(${OpenCV_INCLUDE_DIRS} "/usr/include/opencv4/opencv2")
set(${OpenCV_LIBS}  "/usr/lib/x86_64-linux-gnu/")
find_package(OpenCV 4.2.0 REQUIRED)


include_directories(
        ${OpenCV_INCLUDE_DIRS}
)

add_executable( hello ./hello.cpp )
target_link_libraries(hello ${OpenCV_LIBS})

在hello.cpp目录下打开terminal,然后使用cmake指令,后面跟了一个圆点,表示编译本目录。

cmake .

cmake之后要再make一下才能生成可执行文件。

make

要想执行这个hello可执行文件,需要指令

./hello

执行的效果就是将一张名为lambo.png的图片显示出来。完成了这一步,您就可以在代码中扩展更多的opencv功能了。

此外,帮助文档也尽量以opencv官网文档为准,因为opencv4和opencv2的一些指令有改变,如果从网上下载一些老版本的代码,可能在您的程序中无法使用,所以要以官方文档为准,这个文档是可以切换版本的。

OpenCV: Introduction

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

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

相关文章

Aztec.nr:Aztec的隐私智能合约框架——用Noir扩展智能合约功能

1. 引言 前序博客有&#xff1a; Aztec的隐私抽象&#xff1a;在尊重EVM合约开发习惯的情况下实现智能合约隐私 Aztec.nr&#xff0c;为&#xff1a; 面向Aztec应用的&#xff0c;新的&#xff0c;强大的智能合约框架使得开发者可直观管理私有状态基于Noir构建&#xff0c;…

写一篇nginx配置指南

nginx.conf配置 找到Nginx的安装目录下的nginx.conf文件&#xff0c;该文件负责Nginx的基础功能配置。 配置文件概述 Nginx的主配置文件(conf/nginx.conf)按以下结构组织&#xff1a; 配置块功能描述全局块与Nginx运行相关的全局设置events块与网络连接有关的设置http块代理…

AIGC专栏6——通过阿里云与AutoDL快速拉起Stable Diffusion和EasyPhoto

AIGC专栏6——通过阿里云与AutoDL快速拉起Stable Diffusion和EasyPhoto 学习前言Aliyun DSW快速拉起&#xff08;新用户有三个月免费时间&#xff09;1、拉起DSW2、运行Notebook3、一些小bug AutoDL快速拉起1、拉起AutoDL2、运行Notebook 学习前言 快速拉起AIGC服务 对 用户体…

CAN Driver

CAN Driver 前言&#xff1a;CAN驱动针对的是微控制器内部的CAN控制器&#xff0c;它可以实现以下功能&#xff1a; 对CAN控制器进行初始化&#xff1b; 发送和接收报文&#xff1b; 对报文的数据和功能进行通知&#xff08;对接收报文的指示、对发送报文的确认&#xff09…

基于SSM+Vue的人力资源管理系统

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用Vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

交叉编译工具链-Ubuntu 安装说明

交叉编译工具链-Ubuntu 安装说明 【实验目的】 了解交叉编译工具链的安装方法与使用方法 【实验环境】 1、 ubuntu 14.04 发行版 【注意事项】 1、实验步骤中以“$”开头的命令表示在 ubuntu 环境下执行 【实验步骤】 1、安装交叉编译工具链 在 ubuntu 下打开一个终端并进入到家…

yamot:一款功能强大的基于Web的服务器安全监控工具

关于yamot yamot是一款功能强大的基于Web的服务器安全监控工具&#xff0c;专为只有少量服务器的小型环境构建。yamot只会占用非常少的资源&#xff0c;并且几乎可以在任何设备上运行。该工具适用于Linux或BSD&#xff0c;当前版本暂不支持Windows平台。 比如说&#xff0c;广…

elasticsearch11-实战搜索和分页

个人名片&#xff1a; 博主&#xff1a;酒徒ᝰ. 个人简介&#xff1a;沉醉在酒中&#xff0c;借着一股酒劲&#xff0c;去拼搏一个未来。 本篇励志&#xff1a;三人行&#xff0c;必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》&#xff0c;SpringCloud…

Prometheus+Grafana可视化监控【ElasticSearch状态】

文章目录 一、安装Docker二、安装ElasticSearch(Docker容器方式)三、安装Prometheus四、安装Grafana五、Pronetheus和Grafana相关联六、安装elasticsearch_exporter七、Grafana添加ElasticSearch监控模板 一、安装Docker 注意&#xff1a;我这里使用之前写好脚本进行安装Docke…

Linux学习之平均负载的概念和查看方法

先理解一下平均负载的含义&#xff1a; 平均负载是指单位时间内&#xff0c;系统处于可运行状态和不可中断状态的进程数&#xff0c;也可以看成平均活跃进程数。 可运行状态的进程&#xff1a; 正在使用CPU或者正在等待CPU处理的进程&#xff0c;ps 命令看到的&#xff0c;处于…

AO天鹰优化算法|含源码(元启发式算法)

-----------------------往期目录------------------ 1、灰狼优化算法 文章目录 天鹰优化器一、第一种搜索方法二、第二种搜素方法三、第三种搜素方法四、第四种搜索方法 代码实现 天鹰优化器 Aquila Optimizer&#xff08;AO&#xff09;&#xff0c;灵感来自Aquila在捕捉猎物…

Mysql001:(库和表)操作SQL语句

目录&#xff1a; 》SQL通用规则说明 SQL分类&#xff1a; 》DDL&#xff08;数据定义&#xff1a;用于操作数据库、表、字段&#xff09; 》DML&#xff08;数据编辑&#xff1a;用于对表中的数据进行增删改&#xff09; 》DQL&#xff08;数据查询&#xff1a;用于对表中的数…

开源日报 0825 | 简化开发过程,提升Swift应用性能的扩展工具库

OpenZeppelin/openzeppelin-contracts Stars: 22.8k License: MIT OpenZeppelin Contracts 是一个用于安全智能合约开发的库。它建立在社区验证过的代码基础上&#xff0c;具有以下主要功能&#xff1a; 实现了 ERC20 和 ERC721 等标准。灵活的基于角色的权限控制方案。可重…

数据结构-leetcode-环形链表

解题图解&#xff1a; 代码如下&#xff1a; bool hasCycle(struct ListNode *head) {struct ListNode * fasthead;//在这里fast是快指针//head作为low指针//因为这个题不需要做修改也只需返回true或false//就少开辟一个空间while(fast!NULL&&fast->next!NULL){hea…

Css实现右上角飘带效果

效果图&#xff1a; 源码&#xff1a; <!DOCTYPE html> <html><head><meta charset"utf-8"><title></title><style type"text/css">*{margin: 0 auto;padding: 0;}.wrap {/* 设置宽高 */width: 350px;height: …

多分类中混淆矩阵的TP,TN,FN,FP计算

关于混淆矩阵&#xff0c;各位可以在这里了解&#xff1a;混淆矩阵细致理解_夏天是冰红茶的博客-CSDN博客 上一篇中我们了解了混淆矩阵&#xff0c;并且进行了类定义&#xff0c;那么在这一节中我们将要对其进行扩展&#xff0c;在多分类中&#xff0c;如何去计算TP&#xff0…

1_图神经网络GNN基础知识学习

文章目录 安装PyTorch Geometric安装工具包 在KarateClub数据集上使用图卷积网络 (GCN) 进行节点分类两个画图函数Graph Neural Networks数据集&#xff1a;Zacharys karate club network.PyTorch Geometric数据集介绍 edge_index使用networkx可视化展示 Graph Neural Networks…

cenos自动启动tomcat

首先创建一个脚本 关闭tomcat 等待2分钟 启动tomcat 并且把日志输出在 /usr/local/tomcat/tomcatchognqi.log #!/bin/bashexport JAVA_HOME/usr/local/jdk/jdk1.8.0_211 export JRE_HOME$JAVA_HOME/jre# 日志文件路径和文件名 LOG_FILE"/usr/local/tomcat/tomcatchognqi.…

Ubuntu20.4搭建基于iRedMail的邮件服务器

iRedMail 是一个基于 Linux/BSD 系统的零成本、功能完备、成熟的邮件服务器解决方案。基于ubuntu20.4搭建基于iRedMail的邮件服务器包括环境配置&#xff0c;iRedMail安装与配置&#xff0c;iRedMail调整邮件附件大小等3个小节进行描述。具体如下详细描述。 1 环境配置 1.设置…

企业架构LNMP学习笔记56

MongoDB数据类型操作&#xff1a;CURD 1、添加数据&#xff1a; mongodb里存储数据的格式文档形式&#xff0c;以bson格式的文档形式。 创建数据库&#xff1a; > use tp5shop switched to db tp5shop > db.getName() tp5shop使用切换库&#xff0c;不存在自动创建&am…