How to enable/disable manual white balance in OpenCV (Python)
Using OpenCV on Linux, if you have a video device that interfaces a V4L2 device such as a USB webcam:
camera = cv2.VideoCapture(0)
you can typically enable automatic white balance (= disable manual white balance) for any camera by using
camera.set(cv2.CAP_PROP_AUTO_WB, 1.0) # Enable automatic white balance
or disable automatic white balance (= enable manual white balance) using
camera.set(cv2.CAP_PROP_AUTO_WB, 0.0) # Disable automatic white balance
When disabling automatic white balance, you should also set the manual white balance temperature- see our post How to set manual white balance temperature in OpenCV (Python) for more details.
For V4L2 cameras, as you can see in our previous post on mapping of OpenCV parameters to V4L2 parameters, CAP_PROP_AUTO_WB
is mapped to V4L2_CID_AUTO_WHITE_BALANCE
which is shown in v4l2-ctl -d /dev/video0 --all
as white_balance_temperature_auto
. Therefore, you can easily verify if, for example, disabling the auto white balance worked for your V4L2 camera such as any USB camera by looking at the white_balance_temperature_auto
section of v4l2-ctl -d /dev/video0 --all
:
white_balance_temperature_auto 0x0098090c (bool) : default=1 value=0