教程
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:
這是一個命令行工具,用于格式轉換、裁剪、合并、縮放等操作。它可以將音頻和視頻數據從一種格式轉換為另一種,并且支持大量的編解碼器和文件格式。
本質上就是具有音頻存儲和發送格式轉換一套代碼。