ubuntu 22.04运行opencv4的c++程序遇到的问题
摘要:本文介绍一下在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 windowreturn 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
相关文章:
ubuntu 22.04运行opencv4的c++程序遇到的问题
摘要:本文介绍一下在ubuntu系统中,运行一个最简单的opencv4程序都出问题的解决方法,并对其基本原理作简单阐述。解决问题的方法有很多,本文只提供其中一种。 opencv版本是4.2.0,ubuntu版本是20.04 查询opencv版本的指…...
MDPI模板报错的问题---提示缺少sty文件
MDPI模板报错的问题—提示缺少sty文件 平时大多数提交IEEE trans模板时大多使用CTEX编译,然而,MDPI模板需要用texlive,二者之间如果先安装CTEX后安装texlive将会导致库文件的冲突。结果将会报缺少sty的文件错。网上提供了很多解决方案&#…...
【教程】微信小程序导入外部字体详细流程
前言 在微信小程序中,我们在wxss文件中通过font-family这一CSS属性来设置文本的字体,并且微信小程序有自身支持的内置字体,可以通过代码提示查看微信小程序支持字体: 这些字体具体是什么样式可以参考: 微信小程序--字…...
关于Kali部署OneForAll,不能运行问题
问题描述 运行OneForAll后,出现了如下报错 问题: importterror:无法从’re’导入名称’sre_parse’ (/usr/lib/python3.11/re/init.py) Traceback (most recent call last):File "/home/kali/桌面/App/OneForAll/oneforall.py", line 16, in…...
vue3中使用el-upload + tui-image-editor进行图片处理
效果如下 看之前请先看上一篇《vue3中使用组件tui-image-editor进行图片处理》中的 1、第一步安装 2、第二部封装组件 本篇只是在这基础上结合el-upload使用组件 3、第三步结合el-upload使用组件 <template><el-dialog:title"dialogTitle":modelValue&qu…...
二叉树顺序结构及实现
👉二叉树顺序结构及实现 1.二叉树的顺序结构2.堆的概念及结构3.堆的实现3.1堆向下调整算法3.2堆向上调整算法 4.堆的创建4.1堆创建方法14.1.1构建堆结构体4.1.2堆的初始化4.1.3堆数据添加向上调整4.1.4主函数内容 4.2堆的创建方法24.2.1堆数据添加向下调整 4.3堆数据…...
python读取influxdb中数据
示例代码一:从infludb中获取指定时间段time和value值,并作图保存 from influxdb_client import InfluxDBClient import matplotlib.pyplot as plt# InfluxDB连接信息 url "http://localhost:8086" token "your_token" org "…...
【网络编程】UDP Socket编程
UDP Socket编程 一. DatagramSocket二. DatagramPacket三. InetSocketAddress四. 执行流程五. 代码示例: UDP 回显服务器 数据报套接字: 使用传输层 UDP 协议 UDP: 即 User Datagram Protocol(用户数据报协议),传输层协议。 UDP…...
[GIT]版本控制工具
[GIT]版本控制工具 Git 的命令Git 的配置信息查看现有 Git 配置信息设置 Git 配置信息用户信息配置文本编辑器配置差异分析工具配置 编辑 Git 配置文件 Git 仓库操作初始化 Git 仓库克隆 Git 仓库Git 分支仓库创建Git 远程仓库命令 Git 提交历史Git 标签添加标签查看已有标签删…...
Linux文件管理命令
Linux命令行 命令空格参数(可写可不写)空格文件(可写可不写)ls/opt 根目录下的opt文件夹ls-a 显示所有文件及隐藏文件/optls -l 详细输出文件夹内容 ls -h 输出文件大小(MB...)ls--full-time 完整时间格式输出ls-d 显示文件夹本身信息,不输出内容ls-t 根据最后修改…...
Netty面试题(三)
文章目录 前言一、如何选择序列化协议?二、Netty 的零拷贝实现?总结 前言 如何选择序列化协议?Netty 的零拷贝实现? 一、如何选择序列化协议? 具体场景 对于公司间的系统调用,如果性能要求在 100ms 以上的…...
risc-v dv源代码分析
地址为 GitHub - chipsalliance/riscv-dv: Random instruction generator for RISC-V processor verificationRandom instruction generator for RISC-V processor verification - GitHub - chipsalliance/riscv-dv: Random instruction generator for RISC-V processor verif…...
C语言基础语法复习07-c语言关键字的解释
对前一篇文章写点随笔:https://blog.csdn.net/weixin_43172531/article/details/132893176 基本数据类型(8种)和类型修饰符(4种): void与指针*组合在一起才有具体实体意义。 void本身代表没有类型、没有实体,例如void main(void)。 char c…...
阿里巴巴全店商品采集教程,阿里巴巴店铺所有商品接口(详解阿里巴巴店铺所有商品数据采集步骤方法和代码示例)
随着电商行业的快速发展,阿里巴巴已成为国内的电商平台之一,拥有着海量的商品资源。对于一些需要大量商品数据的商家或者需求方来说,阿里巴巴全店采集是非常必要的。本文将详细介绍阿里巴巴全店采集的步骤和技巧,帮助大家更好地完…...
Android 白天黑夜模式设置
白天黑夜模式是一种动态的UI模式,根据当前时间或用户设置的偏好,在白天和黑夜之间进行切换。它通过调整应用程序的颜色、亮度和其他可视化元素来提供更加舒适和易读的用户界面。 一、简单设置 UiModeManager 是用于管理和控制用户界面模式(UI Mode)。它提供了一组方法,允…...
FFMpeg zoompan 镜头聚焦和移动走位
案例 原始图片 # 输出帧数,默认25帧/秒,25*4 代表4秒 # s1280x80 # 输出视频比例,可以设置和输入图片大小一致 # zoom0.002 表示每帧放大的倍数,下面代码是25帧/每秒 * 4秒,共1000帧 # 最终是 0.002*25*4 0.2&…...
利用hutool工具类实现验证码功能
hutool工具类实现验证码 一.生成验证码二.校验验证码三.使用案例1.引入hutool工具类2.VerifyCodeResp接口响应体3.VerifyCodeController验证码工具类4.测试验证5.项目结构及源码下载 利用hutool工具类,可以很方便生成不同类型的验证码。这里简单记录下使用过程。 一…...
前端面试题: 请解释什么是函数的作用域?
今天做到了一道题:请解释什么是函数的作用域? 我给的答案是: 函数的作用域是指函数执行到内部后创建的数据空间,在函数的作用域内,let定义的变量的有效期为函数作用域 AI觉得我答得比较简单:回答基本正确&…...
华为云云服务器云耀L实例评测 | 华为云云服务器实例新品全面解析
🌷🍁 博主猫头虎(🐅🐾)带您 Go to New World✨🍁 🦄 博客首页——🐅🐾猫头虎的博客🎐 🐳 《面试题大全专栏》 🦕 文章图文…...
Nginx配置SSL证书
1 Ubuntu 20.04 上安装 Nginx Nginx 发音 “engine x” ,是一个开源软件,高性能 HTTP 和反向代理服务器,用来在互联网上处理一些大型网站。它可以被用作独立网站服务器,负载均衡,内容缓存和针对 HTTP 和非 HTTP 的反向代理服务器。…...
LlamaIndex中文文档全解析:从安装到实战RAG系统的保姆级指南
LlamaIndex中文文档全解析:从安装到实战RAG系统的保姆级指南 在人工智能技术快速迭代的今天,如何让大型语言模型(LLM)真正理解并处理私有数据成为开发者面临的核心挑战。LlamaIndex作为专为上下文增强设计的框架,正在改变我们构建智能应用的方…...
Depth Pro:重新定义单目深度估计的速度与精度边界
Depth Pro:重新定义单目深度估计的速度与精度边界 【免费下载链接】ml-depth-pro Depth Pro: Sharp Monocular Metric Depth in Less Than a Second. 项目地址: https://gitcode.com/gh_mirrors/ml/ml-depth-pro 技术原理:如何让机器真正"看…...
OpenClaw 网关重启全攻略:实用指令与故障排除指南
手把手教你一键部署OpenClaw,连接微信、QQ、飞书、钉钉等,1分钟全搞定! 一、几种最省事的重启法子(快速上手) 手把手教你一键部署OpenClaw,连接微信、QQ、飞书、钉钉等,1分钟全搞定࿰…...
OpenClaw怎么换大模型?3步免费切换各种大模型配置教程
手把手教你一键部署OpenClaw,连接微信、QQ、飞书、钉钉等,1分钟全搞定! 简单说一下:OpenClaw这玩意儿本身没带“大脑”,它就是个负责干活的躯壳,得靠接外面的大模型才能思考。想换个“大脑”其实就三步&am…...
告别黑苹果配置噩梦:5大核心优势让开源工具OpCore-Simplify成为新手救星
告别黑苹果配置噩梦:5大核心优势让开源工具OpCore-Simplify成为新手救星 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 黑苹果配置一直是…...
终极指南:如何使用Docker Stacks与Git Hooks实现自动化代码质量检查
终极指南:如何使用Docker Stacks与Git Hooks实现自动化代码质量检查 【免费下载链接】docker-stacks Ready-to-run Docker images containing Jupyter applications 项目地址: https://gitcode.com/gh_mirrors/do/docker-stacks Docker Stacks是一个提供现成…...
OpenClaw多语言支持:百川2-13B量化模型国际化任务实践
OpenClaw多语言支持:百川2-13B量化模型国际化任务实践 1. 为什么需要多语言自动化助手 去年接手一个跨国协作项目时,我每天要处理来自五个国家的邮件、文档和会议记录。最头疼的不是时差问题,而是不同语言的文档混在一起——英文技术规范、…...
Ai人工智能知识补充
文章目录 1.5 数据与算法基础:智能系统的“燃料”与“引擎” 1.5.1 数据工程:从原始数据到模型“燃料”的全链路 1.5.2 算法模型构建:从问题定义到模型部署的“炼金术” 1.5.3 数据隐私与安全:在价值挖掘与权利保护间走钢丝 1.6 面临的主要挑战:通往真正智能之路的险阻 1.…...
2步实现格式自由:Save Image as Type让网页图片转换体验升级10倍
2步实现格式自由:Save Image as Type让网页图片转换体验升级10倍 【免费下载链接】Save-Image-as-Type Save Image as Type is an chrome extension which add Save as PNG / JPG / WebP to the context menu of image. 项目地址: https://gitcode.com/gh_mirrors…...
CC Switch模型测试功能:构建可靠AI服务的全周期验证方法论
CC Switch模型测试功能:构建可靠AI服务的全周期验证方法论 【免费下载链接】cc-switch A cross-platform desktop All-in-One assistant tool for Claude Code, Codex & Gemini CLI. 项目地址: https://gitcode.com/GitHub_Trending/cc/cc-switch [问题发…...
