使用 OpenCV 控制 Pi 相机曝光

mev*_*mar 2 python opencv picamera

我使用的是 Raspberry Pi V2.1 相机。我想使用 OpenCV 控制相机\xe2\x80\x99s 的曝光时间、快门速度等。我正在关注视频 I/O 文档的 OpenCV 标志。链接在这里:

\n

https://docs.opencv.org/3.4/d4/d15/group__videoio__flags__base.html

\n

例如:

\n

我尝试过使用

\n
cv2.CAP_PROP_AUTO_EXPOSURE = 0.25 and 0.75\n
Run Code Online (Sandbox Code Playgroud)\n

似乎自动曝光正在打开和关闭。但是当我尝试使用手动设置值时

\n
cv2.CAP_PROP_EXPOSURE = -1 to -13 (according to some online blogs)\n
Run Code Online (Sandbox Code Playgroud)\n

相机没有响应。

\n

其他标志也是如此。他们中的大多数似乎根本没有响应。\n我已阅读在线文档并了解到标志与相机相关。在这种情况下,OpenCV 文档根本没有帮助。

\n

所以我的问题是如何找出哪些标志对 Pi 相机有用以及这些标志的有效值是什么?

\n

先感谢您。

\n

小智 6

我不是该主题的专家,但我设法使用 v2.1 相机手动设置 RPi 4 的曝光。我将 CAP_PROP_AUTO_EXPOSURE 设置为 0.75,将 CAP_PROP_EXPOSURE 设置为 0。这给我留下了一个黑框(正如我猜测的那样)。增加曝光值可以使图像逐渐变亮。对于高于 80 之类的值,它不再变得更亮。

此代码在每个显示帧后逐渐增加曝光并且对我有用:

import cv2

# Open Pi Camera
cap = cv2.VideoCapture(0)
# Set auto exposure to false
cap.set(cv2.CAP_PROP_AUTO_EXPOSURE, 0.75)

exposure = 0
while cap.isOpened():
    # Grab frame
    ret, frame = cap.read()
    # Display if there is a frame
    if ret:
        cv2.imshow('Frame', frame)
        if cv2.waitKey(25) & 0xFF == ord('q'):
            break
    # Set exposure manually
    cap.set(cv2.CAP_PROP_EXPOSURE, exposure)
    # Increase exposure for every frame that is displayed
    exposure += 0.5

# Close everything
cap.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

干杯,

西蒙