如何在 OpenCV (Python) 中设置手动白平衡温度

在 Linux 上使用 OpenCV,如果你有连接 V4L2 设备(如 USB 摄像头)的视频设备:

open_camera.py
camera = cv2.VideoCapture(0)

要设置手动白平衡温度,你首先需要使用 CAP_PROP_AUTO_WB 禁用自动白平衡。有关如何执行此操作的更多详细信息,请参阅我们之前的文章如何在 OpenCV (Python) 中启用/禁用手动白平衡,这里只提供适用于大多数摄像头的简短版本。

之后,你可以使用 CAP_PROP_WB_TEMPERATURE 设置白平衡温度

set_wb_temperature.py
camera.set(cv2.CAP_PROP_AUTO_WB, 0.0) # 禁用自动白平衡
camera.set(cv2.CAP_PROP_WB_TEMPERATURE, 4200) # 将手动白平衡温度设置为 4200K

对于 V4L2 摄像头,正如我们之前关于 OpenCV 参数映射到 V4L2 参数的文章所述,CAP_PROP_WB_TEMPERATURE 映射到 V4L2_CID_WHITE_BALANCE_TEMPERATURE,在 v4l2-ctl -d /dev/video0 --all 中显示为 white_balance_temperature 。因此,你可以通过查看 v4l2-ctl -d /dev/video0 --allwhite_balance_temperature 部分来轻松验证例如禁用自动白平衡是否适用于你的 V4L2 摄像头(如任何 USB 摄像头):

v4l2ctl-output.txt
white_balance_temperature 0x0098091a (int)    : min=2800 max=6500 step=1 default=4600 value=4200

Check out similar posts by category: OpenCV, Python