安装
我有一个支持uvc的相机,通过USB线和我的linux开发机连起来了。为了查看它的信息,我上网发现有v4l-utils这个包。这个包的工具可以让我在写代码前就对相机的参数有个大概了解。
sudo apt install v4l-utils
安装成功后系统上多出了一下工具:
v4l2-compliance v4l2-ctl v4l2-dbg v4l2-sysfs-path
我主要是用v4l2-ctl来查看摄像头的信息。
罗列所有摄像头设备
虽然下面显示/dev下两个设备,但是实际上就一个摄像头(Webcam gadget),下面用/dev/video0来访问。
#v4l2-ctl --list-devices
Webcam gadget: UVC Camera (usb-0000:00:14.0-1):
/dev/video0
/dev/video1
查看支持的分辨率和格式
我这个相机是4K的,可以看到4K的格式
#v4l2-ctl --device=/dev/video0 --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
Type: Video Capture
[0]: 'YUYV' (YUYV 4:2:2)
Size: Discrete 1280x720
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Size: Discrete 1920x1080
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
Size: Discrete 3840x2160
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
[1]: 'MJPG' (Motion-JPEG, compressed)
Size: Discrete 1920x1080
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Interval: Discrete 0.100s (10.000 fps)
查看支持的可调参数
摄像头的有些参数是可调的,有些甚至支持zoom和云台的控制,具体的情况是看相机端实现的。我这里可调参数较少,主要是一些图像参数。
v4l2-ctl -d /dev/video0 --list-ctrls
brightness 0x00980900 (int) : min=0 max=21997 step=1 default=50 value=11500
contrast 0x00980901 (int) : min=0 max=100 step=1 default=50 value=0
saturation 0x00980902 (int) : min=0 max=127 step=1 default=50 value=60
hue 0x00980903 (int) : min=0 max=0 step=10 default=90 value=0
white_balance_temperature_auto 0x0098090c (bool) : default=0 value=0