相机--相机标定实操

教程

camera_calibration移动画面示例

usb_cam使用介绍和下载

我使用的是USB相机,所以直接使用ros的usb_cam功能包驱动相机闭关获取实时图像,然后用ros的camera_calibration标定相机。

查询摄像机的信息

v4l2-ctl -d 0 --all的作用

命令详解:

  • v4l2-ctl:这是 V4L2 的命令行控制工具,属于 v4l-utils 软件包。
  • -d 0:指定设备节点 /dev/video0-d 表示 device,后面的数字是设备索引号,例如:
    • /dev/video0 对应索引 0,
    • /dev/video1 对应索引 1,依此类推。
  • --all:显示该设备的所有可用信息,包括:
    • 设备驱动信息
    • 支持的视频格式
    • 当前设置的视频格式
    • 支持的帧率
    • 控制项(如亮度、对比度、饱和度等)
    • 流媒体状态等

我的设备:

v4l2-ctl -d 0 --all
Driver Info:Driver name      : uvcvideoCard type        : SDYH-8P0P: SDYH-8P0PBus info         : usb-xhci-hcd.2.auto-1.1Driver version   : 6.1.83Capabilities     : 0x84a00001Video CaptureMetadata CaptureStreamingExtended Pix FormatDevice CapabilitiesDevice Caps      : 0x04200001Video CaptureStreamingExtended Pix Format
Media Driver Info:Driver name      : uvcvideoModel            : SDYH-8P0P: SDYH-8P0PSerial           : Bus info         : usb-xhci-hcd.2.auto-1.1Media version    : 6.1.83Hardware revision: 0x00000823 (2083)Driver version   : 6.1.83
Interface Info:ID               : 0x03000002Type             : V4L Video
Entity Info:ID               : 0x00000001 (1)Name             : SDYH-8P0P: SDYH-8P0PFunction         : V4L2 I/OFlags            : defaultPad 0x01000007   : 0: SinkLink 0x02000010: from remote pad 0x100000a of entity 'Extension 3' (Video Pixel Formatter): Data, Enabled, Immutable
Priority: 2
Video input : 0 (Input 1: ok)
Format Video Capture:Width/Height      : 1920/1080Pixel Format      : 'MJPG' (Motion-JPEG)Field             : NoneBytes per Line    : 0Size Image        : 4147200Colorspace        : sRGBTransfer Function : Rec. 709YCbCr/HSV Encoding: ITU-R 601Quantization      : Default (maps to Full Range)Flags

 Driver Info(驱动信息)

Driver Info:Driver name      : uvcvideoCard type        : SDYH-8P0P: SDYH-8P0PBus info         : usb-xhci-hcd.2.auto-1.1Driver version   : 6.1.83Capabilities     : 0x84a00001Video CaptureMetadata CaptureStreamingExtended Pix FormatDevice CapabilitiesDevice Caps      : 0x04200001Video CaptureStreamingExtended Pix Format
  • Driver name:使用的内核驱动名称,这里是 uvcvideo,表示这是一个支持 USB Video Class (UVC) 的设备。
  • Card type:设备型号,这里是摄像头的名字:SDYH-8P0P
  • Bus info:设备连接的总线位置,这里是通过 USB 接口连接的。
  • Driver version:驱动程序版本号,这里是 Linux 内核版本 6.1.83。
  • Capabilities:设备能力位掩码,表示该设备支持的功能:
    • Video Capture:可以捕获视频流。
    • Metadata Capture:支持元数据(如时间戳等)。
    • Streaming:支持流式传输。
    • Extended Pix Format:支持扩展像素格式。
    • Device Capabilities:支持查询设备能力。
  • Device Caps:设备接口的能力,比 Capabilities 更细粒度,这里与上面类似。

 Media Driver Info(媒体驱动信息)

Media Driver Info:Driver name      : uvcvideoModel            : SDYH-8P0P: SDYH-8P0PSerial           : Bus info         : usb-xhci-hcd.2.auto-1.1Media version    : 6.1.83Hardware revision: 0x00000823 (2083)Driver version   : 6.1.83
  • Model:设备型号,同上。
  • Serial:序列号,这里为空,表示未提供。
  • Media version:媒体框架的版本号。
  • Hardware revision:硬件版本号(十六进制),可用于识别不同批次硬件。
  • Driver version:驱动版本号

 Interface Info(接口信息)

Interface Info:ID               : 0x03000002Type             : V4L Video
  • ID:接口唯一标识符。
  • Type:接口类型,这里是标准的 V4L2 视频接口

 Entity Info(实体信息)

Entity Info:ID               : 0x00000001 (1)Name             : SDYH-8P0P: SDYH-8P0PFunction         : V4L2 I/OFlags            : defaultPad 0x01000007   : 0: SinkLink 0x02000010: from remote pad 0x100000a of entity 'Extension 3' (Video Pixel Formatter): Data, Enabled, Immutable
  • Entity:是 Media Framework 中的一个概念,代表一个功能模块(比如传感器、编码器等)。
  • Function:这个实体的功能是作为 V4L2 输入/输出设备。
  • Pad:表示实体的输入/输出端口。Sink 表示这是输入端口。
  • Link:表示与其他实体之间的连接关系,这里是来自另一个实体“Extension 3”的输出端口的数据链路,且为启用状态。

Format Video Capture(当前视频采集格式)

这是重点

Format Video Capture:Width/Height      : 1920/1080Pixel Format      : 'MJPG' (Motion-JPEG)Field             : NoneBytes per Line    : 0Size Image        : 4147200Colorspace        : sRGBTransfer Function : Rec. 709YCbCr/HSV Encoding: ITU-R 601Quantization      : Default (maps to Full Range)Flags
  • Width/Height:当前设置的图像分辨率,这里是 1920×1080。
  • Pixel Format:当前像素格式为 'MJPG',即 Motion JPEG,这是一种压缩格式,常用于摄像头以减少带宽需求。
  • Field:场模式,None 表示非隔行扫描(逐行扫描)。
  • Bytes per Line:每行字节数,对于 MJPG 格式通常为 0,因为它是压缩格式。
  • Size Image:一帧图像的大小(字节),这里是 1920×1080×(压缩后平均约 2B) ≈ 4MB。
  • Colorspace:色彩空间,这里是 sRGB
  • Transfer Function:传输函数,这里是 Rec. 709(标准伽马曲线)。
  • YCbCr Encoding:色度编码方式,这里是 ITU-R BT.601(适用于标清视频)。
  • Quantization:量化方式,Default (Full Range) 表示亮度值范围为 0~255(而不是 16~235 的 TV 范围)。
  • Flags:格式标志,目前为空。

查看相机支持的像素格式

v4l2-ctl -d 0 --list-formats

问题

swscaler @ 0xaaaaf438c7e0] No accelerated colorspace conversion found from yuv422p to rgb24.

硬件加速不可用:你的系统可能缺少必要的硬件加速支持或驱动程序,无法提供从 YUV 到 RGB 的快速转换。

意味着 FFmpeg 在尝试将 YUV422P 格式的图像转换为 RGB24 格式时,没有找到任何硬件加速的方法来进行这个颜色空间转换。因此,它只能使用软件方式来完成这一任务,这通常会导致更高的 CPU 使用率,而且音频话题发送频率慢。

YUV 到 RGB 转换的需求:当你使用 usb_cam 节点以原始像素格式(如 YUYV 或 YUV422P)读取摄像头数据时,ROS 需要将其转换为更常用的 RGB 格式以便进一步处理。如果没有硬件加速选项可用,这个转换过程将由 CPU 执行。

FFmpeg:

这是一个命令行工具,用于格式转换、裁剪、合并、缩放等操作。它可以将音频和视频数据从一种格式转换为另一种,并且支持大量的编解码器和文件格式。

本质上就是具有音频存储和发送格式转换一套代码。

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

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

相关文章

【Kotlin】高阶函数Lambda内联函数

【Kotlin】简介&变量&类&接口 【Kotlin】数字&字符串&数组&集合 【Kotlin】高阶函数&Lambda&内联函数 【Kotlin】表达式&关键字 文章目录 函数还是属性高阶函数抽象和高阶函数实例: 函数作为参数的需求方法引用表达式更多使用场…

飞算JavaAI 炫技赛重磅回归!用智能编码攻克老项目重构难题

深夜还在排查十年前Hibernate框架埋下的N1查询隐患?跨语言迁移时发现SpringMVC控制器里的业务逻辑像一团乱麻?当企业数字化进入深水区,百万行代码的老系统就像一座随时可能崩塌的"技术债冰山"。近日,飞算科技发布JavaAI…

Linux I2C 子系统全解:结构、机制与工程实战

Linux I2C 子系统全解:结构、机制与工程实战 前言 I2C(Inter-Integrated Circuit)作为嵌入式系统和各种电子产品中最常用的串行通信总线之一,在 Linux 内核中的地位极其重要。然而,Linux I2C 子系统的分层结构、对象模…

多线程编程技术解析及示例:pthread_cond_timedwait、pthread_mutex_lock 和 pthread_mutex_trylock

多线程编程技术解析及示例:pthread_cond_timedwait、pthread_mutex_lock 和 pthread_mutex_trylock 摘要 本文深入解析了多线程编程中 pthread_cond_timedwait、pthread_mutex_lock 和 pthread_mutex_trylock 三个函数的功能、使用场景及注意事项,并通…

元胞自动机(Cellular Automata, CA)

一、什么是元胞自动机(Cellular Automata, CA) 元胞自动机(CA) 是一种基于离散时间、离散空间与规则驱动演化的动力系统,由 冯诺依曼(John von Neumann) 于1940年代首次提出,用于模…

Flutter面试题

Flutter架构解析 1. Flutter 是什么?它与其他移动开发框架有什么不同? Flutter 是 Google 开发的开源移动应用开发框架,可用于快速构建高性能、高保真的移动应用(iOS 和 Android),也支持 Web、桌面和嵌入式设备。。它与其他移动开发框架(如 React Native、Xamarin、原…

MySQL 如何判断某个表中是否存在某个字段

在MySQL中,判断某个表中是否存在某个字段,可以通过查询系统数据库 INFORMATION_SCHEMA.COLUMNS 实现。以下是详细步骤和示例: 方法:使用 INFORMATION_SCHEMA.COLUMNS 通过查询系统元数据表 COLUMNS,检查目标字段是否存…

golang 实现基于redis的并行流量控制(计数锁)

在业务开发中,有时需要对某个操作在整个集群中限制并发度,例如限制大模型对话的并行数。基于redis zset实现计数锁,做个笔记。 关键词:并行流量控制、计数锁 package redisutilimport ("context""fmt""…

从线性方程组角度理解公式 s=n−r(3E−A)

从线性方程组角度理解公式 sn−r(3E−A) 这个公式本质上是 ​齐次线性方程组解空间维度 的直接体现。下面通过三个关键步骤解释其在线性方程组中的含义: 1. ​公式对应的线性方程组 考虑矩阵方程: (3E−A)x0 其中: x 是 n 维未知向量3E−…

Docker 在 AI 开发中的实践:GPU 支持与深度学习环境的容器化

人工智能(AI)和机器学习(ML),特别是深度学习,正以前所未有的速度发展。然而,AI 模型的开发和部署并非易事。开发者常常面临复杂的依赖管理(如 Python 版本、TensorFlow/PyTorch 版本、CUDA、cuDNN)、异构硬件(CPU 和 GPU)支持以及环境复现困难等痛点。这些挑战严重阻…

解决CSDN等网站访问不了的问题

原文网址:解决CSDN等网站访问不了的问题-CSDN博客 简介 本文介绍解决CSDN等网站访问不了的方法。 问题描述 CSDN访问不了了,页面是空的。 问题解决 方案1:修改DNS 可能是dns的问题,需要重新配置。 国内常用的dns是&#x…

使用tortoisegit连接远程仓库进行克隆、拉取、获取、提交、推送、新建/切换分支、重命名、删除的一套流程(附带巨全面的git命令)

1.整备好tortoisegit工具。 2.新建一个文件夹,并进入这个文件夹后鼠标右击(选择克隆): 3.先去项目中拿到https地址,再填入: 4.新建分支,右击克隆到本地的项目文件: 5.推送到远程&am…

ArcGIS Pro 3.4 二次开发 - 地图创作 1

环境:ArcGIS Pro SDK 3.4 + .NET 8 文章目录 ArcGIS Pro 3.4 二次开发 - 地图创作 11 样式管理1.1 如何通过名称获取项目中的样式1.2 如何创建新样式1.3 如何向项目添加样式1.4 如何从项目中移除样式1.5 如何向样式添加样式项1.6 如何从样式中移除样式项1.7 如何判断样式是否可…

Express 集成Sequelize+Sqlite3 默认开启WAL 进程间通信 Conf 打包成可执行 exe 文件

代码:express-exe: 将Express开发的js打包成exe服务丢给客户端使用 实现目标 Express 集成 Sequelize 操作 Sqlite3 数据库; 启动 Sqlite3 时默认开启 WAL 模式,避免读写互锁,支持并发读; 利用 Conf 实现主进程与 Ex…

.Net Framework 4/C# 初识 C#

一、C# 专栏 由于博主原先是做的Linux C/C 嵌入式领域,因此对 C# 也较为懵懂,C# 是典型的 OOP 编程,这一点与 C 类似,但是在语法上,C# 移除了对指针的运用以及内存管理,所以既不用考虑指针的复杂运用也不用…

Python趣学篇:Pygame实现粒子烟花绽放效果

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《Python星球日记》🪐 目录 一、项目亮点与效果预览1. 核心特色功能2. 技术学习价值二、技术原理深度解析1. 向量运算:烟花运动的数学基…

NiceGUI 是一个基于 Python 的现代 Web 应用框架

NiceGUI 是一个基于 Python 的现代 Web 应用框架,它允许开发者直接使用 Python 构建交互式 Web 界面,而无需编写前端代码。以下是 NiceGUI 的主要功能和特点: 核心功能 1.简单易用的 UI 组件 提供按钮、文本框、下拉菜单、滑块、图表等常见…

Linux中的mysql逻辑备份与恢复

一、安装mysql社区服务 二、数据库的介绍 三、备份类型和备份工具 一、安装mysql社区服务 这是小编自己写的,没有安装的去看看 Linux换源以及yum安装nginx和mysql-CSDN博客 二、数据库的介绍 2.1 数据库的组成 数据库是一堆物理文件的集合,主要包括…

鸿蒙UI开发——组件的自适应拉伸

1、概 述 针对常见的开发场景,ArkUI开发框架提供了非常多的自适应布局能力,这些布局可以独立使用,也可多种布局叠加使用。本文针对ArkUI提供的拉伸能力做简单讨论。 拉伸能力是指容器组件尺寸发生变化时,增加或减小的空间全部分…

K 值选对,准确率翻倍:KNN 算法调参的黄金法则

目录 一、背景介绍 二、KNN 算法原理 2.1 核心思想 2.2 距离度量方法 2.3 算法流程 2.4算法结构: 三、KNN 算法代码实现 3.1 基于 Scikit-learn 的简单实现 3.2 手动实现 KNN(自定义代码) 四、K 值选择与可视化分析 4.1 K 值对分类…