zl程序教程

您现在的位置是:首页 >  其它

当前栏目

USB摄像头设置采集亮度和对比度

设置 采集 USB 摄像头 亮度 对比度
2023-09-14 09:12:46 时间

1.设置usb摄像头的亮度和对比度
2.ffmpeg中滤镜设置亮度和对比度
3.obs中的色彩范围设置

1.设置usb摄像头的亮度和对比度

要在 UVC 协议中设置亮度和对比度,你需要使用 v4l2-ctl 命令行工具来控制 UVC 摄像头的设置。在 Ubuntu 20 下,你可以使用以下命令设置亮度和对比度:

v4l2-ctl -d /dev/video0 --set-ctrl=brightness=<brightness>
v4l2-ctl -d /dev/video0 --set-ctrl=contrast=<contrast>

其中, 和 分别表示亮度和对比度的值。你可以使用介于0和255之间的整数来设置这些值。0 表示最低亮度/对比度,255 表示最高亮度/对比度。

例如,要将亮度设置为30,对比度设置为50,可以使用以下命令:

v4l2-ctl -d /dev/video0 --set-ctrl=brightness=30
v4l2-ctl -d /dev/video0 --set-ctrl=contrast=50

要查看当前摄像头的亮度和对比度设置,可以使用以下命令:

v4l2-ctl -d /dev/video0 --get-ctrl=brightness
v4l2-ctl -d /dev/video0 --get-ctrl=contrast

这将显示当前的亮度和对比度值。例如,如果当前的亮度值是 30,对比度值是 50,则命令的输出将类似于以下内容:

brightness: 30
contrast: 50

v4l2-ctl -d /dev/video2 --list-ctrls

User Controls
brightness 0x00980900 (int) : min=-128 max=127 step=1 default=-11 value=-11
contrast 0x00980901 (int) : min=0 max=255 step=1 default=148 value=148
saturation 0x00980902 (int) : min=0 max=255 step=1 default=180 value=180
hue 0x00980903 (int) : min=-128 max=127 step=1 default=0 value=0

亮度0x00980900(int):最小值=-128最大值=127步长=1默认值=-11值=-64

对比度0x00980901(int):最小值=0最大值=255步长=1默认值=148值=148

饱和度0x00980902(int):最小值=0最大值=255步长=1默认值=180值=180

色调0x00980903(int):最小值=-128最大值=127步长=1默认值=0值=0

2.ffmpeg中滤镜设置亮度和对比度

可以通过 FFmpeg 的滤镜来实现,比如使用 scale 滤镜进行转换。同时,也可以在转换过程中改变色彩范围,比如使用 scale 滤镜的 in_range 和 out_range 参数来指定输入和输出的色彩范围,例如:

ffplay -vf "scale=in_range=bt601:out_range=bt709" input.mp4

这里的 in_range 参数指定输入的色彩范围为 bt601,out_range 参数指定输出的色彩范围为 bt709。可以根据需要进行调整。

3.obs中的色彩范围设置

在 OBS 中,Color Range 选项是指视频的色彩范围。它有两个选项:Limited 和 Full。

设置成limited或者full会对画质产生什么影响吗?
设置为 Limited 或 Full 色彩范围会影响视频信号的亮度和色彩范围,从而对画质产生影响。
当设置为 limited 时,视频采用的是 BT.601 标准的颜色空间,颜色范围是 16-235。而当设置为 full 时,视频采用的是 BT.709 标准的颜色空间,颜色范围是 0-255。
在 Full 色彩范围下,视频信号的亮度范围是 0 到 255,色彩范围是 0 到 255。这意味着黑色和白色的值可以达到 0 和 255,颜色值的范围也可以达到 0 到 255。这种范围通常在视频编辑、颜色分级等应用中使用。

在 Limited 色彩范围下,视频信号的亮度范围是 16 到 235,色彩范围是 16 到 240。这意味着黑色和白色的值的范围在 16 到 235 之间,颜色值的范围在 16 到 240 之间。这种范围通常在广播、视频传输等领域中使用。

因此,使用 Full 色彩范围可能会产生更鲜艳的颜色和更高的对比度,而使用 Limited 色彩范围可能会产生更为柔和的颜色和更适合视频传输和播放的画面。
对于 Full 色彩范围,可以使用以下命令:

v4l2-ctl -d /dev/video0 --set-ctrl=colorspace=1

对于 Limited 色彩范围,可以使用以下命令:

v4l2-ctl -d /dev/video0 --set-ctrl=colorspace=8

注意,这些命令仅在摄像头支持控制颜色空间的情况下才有效。如果摄像头不支持此控制项,则命令将失败。可以使用 v4l2-ctl -d /dev/video0 --list-ctrls 命令查看摄像头支持哪些控制项。

ffmpeg是音视频必备,但即使从业数年,它似乎依然有无穷的秘密,感兴趣添加笔者微信:YQW1163720468,加入ffmpeg微信群讨论。但记得备注:ffmpeg爱好者