Manual exposure support for OpenCV

This commit is contained in:
Szymon Acedański 2019-03-11 00:21:54 +01:00
parent 983ddb83ba
commit 0c4992ffaf
3 changed files with 27 additions and 0 deletions

View file

@ -37,6 +37,17 @@ if fw != -1:
if fh != -1: if fh != -1:
video_capture.set(cv2.CAP_PROP_FRAME_HEIGHT, fh) video_capture.set(cv2.CAP_PROP_FRAME_HEIGHT, fh)
# Disable autoexposure
exposure = config.getint("video", "exposure", fallback=-1)
if exposure != -1:
# For a strange reason on some cameras (e.g. Lenoxo X1E)
# setting manual exposure works only after a couple frames
# are captured.
for i in range(6):
video_capture.grab()
video_capture.set(cv2.CAP_PROP_AUTO_EXPOSURE, 1.0) # 1 = Manual
video_capture.set(cv2.CAP_PROP_EXPOSURE, 167.0)
# Let the user know what's up # Let the user know what's up
print(""" print("""
Opening a window with a test feed Opening a window with a test feed

View file

@ -144,6 +144,17 @@ if fh != -1:
# This will let the camera adjust its light levels while we're importing for faster scanning # This will let the camera adjust its light levels while we're importing for faster scanning
video_capture.grab() video_capture.grab()
# Disable autoexposure
exposure = config.getint("video", "exposure", fallback=-1)
if exposure != -1:
# For a strange reason on some cameras (e.g. Lenoxo X1E)
# setting manual exposure works only after a couple frames
# are captured.
for i in range(5):
video_capture.grab()
video_capture.set(cv2.CAP_PROP_AUTO_EXPOSURE, 1.0) # 1 = Manual
video_capture.set(cv2.CAP_PROP_EXPOSURE, 167.0)
# Note the time it took to open the camera # Note the time it took to open the camera
timings["ic"] = time.time() - timings["ic"] timings["ic"] = time.time() - timings["ic"]

View file

@ -70,6 +70,11 @@ device_format = v4l2
# OPENCV only. # OPENCV only.
force_mjpeg = false force_mjpeg = false
# Specify exposure value explicitly. This disables autoexposure.
# Use qv4l2 to determine an appropriate value.
# OPENCV only.
exposure = -1
[debug] [debug]
# Show a short but detailed diagnostic report in console # Show a short but detailed diagnostic report in console
end_report = false end_report = false