![[具身智能-595]:v4l2-ctl 完整详解(RDK X5 / Linux V4L2 USB 相机专用)](http://pic.xiahunao.cn/yaotu/[具身智能-595]:v4l2-ctl 完整详解(RDK X5 / Linux V4L2 USB 相机专用))
v4l2-ctl 完整详解RDK X5 / Linux V4L2 USB 相机专用v4l2-ctl是v4l-utils工具集里的命令行控制程序直接和内核 V4L2 子系统交互优先级高于 OpenCV 设置是嵌入式调试摄像头的标准工具。一、安装bash运行sudo apt update sudo apt install v4l-utils通用调用格式bash运行v4l2-ctl -d /dev/videoX [参数] # -d 指定设备不指定默认使用 /dev/video0二、信息查询类命令最常用1. 查看设备基础信息bash运行v4l2-ctl -d /dev/video0 --info输出内容驱动名称uvcvideo、总线地址、设备能力、采集能力。 用来确认是不是 UVC USB 摄像头。2. 查询支持分辨率、图像格式、帧率【重中之重】bash运行v4l2-ctl -d /dev/video0 --list-formats-ext列出相机支持 MJPG / YUYV 以及每种格式下所有分辨率、支持帧率。OpenCV 无法枚举支持规格只能依靠本条命令。3. 查询当前正在生效的图像格式bash运行v4l2-ctl -d /dev/video0 --get-fmt-video输出宽高、像素格式 (MJPG/YUYV)、色彩空间。4. 查询帧率配置bash运行v4l2-ctl -d /dev/video0 --get-parm-video5. 列出所有可调图像控制参数曝光、亮度、白平衡等bash运行v4l2-ctl -d /dev/video0 --list-ctrls展示每个参数最大 / 最小值、步长、默认值、当前值。6. 读取单个控制参数bash运行v4l2-ctl -d /dev/video0 --get-ctrl brightness三、参数设置类命令⚠️重要前提相机不能被 OpenCV/Python 程序占用占用时设置不生效1. 设置分辨率 像素格式bash运行# 1080P MJPG v4l2-ctl -d /dev/video0 --set-fmt-videowidth1920,height1080,pixelformatMJPG # 720P YUYV v4l2-ctl -d /dev/video0 --set-fmt-videowidth1280,height720,pixelformatYUYV2. 设置帧率bash运行v4l2-ctl -d /dev/video0 --set-parm303. 图像画质参数设置通用模板bash运行# 亮度 v4l2-ctl --set-ctrl brightness5 # 对比度 v4l2-ctl --set-ctrl contrast35 # 饱和度 v4l2-ctl --set-ctrl saturation604. 曝光控制工业高频使用bash运行# 0手动曝光模式 v4l2-ctl --set-ctrl auto_exposure0 # 设置曝光时长 v4l2-ctl --set-ctrl exposure400 # 恢复自动曝光 v4l2-ctl --set-ctrl auto_exposure35. 白平衡控制bash运行# 关闭自动白平衡 v4l2-ctl --set-ctrl white_balance_automatic0 # 开启自动白平衡 v4l2-ctl --set-ctrl white_balance_automatic1四、图像抓取测试快速验证相机是否正常出图bash运行# 抓取一帧保存raw数据 v4l2-ctl -d /dev/video0 --stream-mmap --stream-toframe.raw --stream-count1五、关键原理与开发注意事项生效优先级v4l2-ctl内核层直接配置 OpenCVcap.set()推荐流程启动采集程序前shell 脚本先用 v4l2-ctl 固化相机参数。参数生命周期 USB 摄像头重新插拔、断电后所有设置全部丢失。 解决方案开机启动脚本自动执行 v4l2-ctl 配置。/dev/videoN 区分 UVC 摄像头生成两个设备video0视频采集通道 |video1metadata 通道不要使用 video1 采集图像。OpenCV 常见坑 Linux 下cap.set()对曝光、白平衡几乎无效图像画质调节统一交给 v4l2-ctl。六、RDK 工程启动脚本示例参考bash运行#!/bin/bash DEV/dev/video0 v4l2-ctl -d $DEV --set-fmt-videowidth1280,height720,pixelformatMJPG v4l2-ctl -d $DEV --set-ctrl auto_exposure0 v4l2-ctl -d $DEV --set-ctrl exposure350 # 随后启动python采集程序 python3 camera_demo.py