python - 使用 OpenCV 进行 Pi 相机曝光控制
问题描述
我正在使用 Raspberry Pi V2.1 相机。我想使用 OpenCV 控制相机的曝光时间、快门速度等。我正在关注视频 I/O 文档的 OpenCV 标志。链接在这里:
https://docs.opencv.org/3.4/d4/d15/group__videoio__flags__base.html
例如:
我试过使用
cv2.CAP_PROP_AUTO_EXPOSURE = 0.25 and 0.75
似乎自动曝光正在打开和关闭。但是当我尝试使用手动设置值时
cv2.CAP_PROP_EXPOSURE = -1 to -13 (according to some online blogs)
相机没有响应。
其他标志也是如此。他们中的大多数似乎根本没有回应。我已阅读在线文档并了解标志取决于相机。在这种情况下,OpenCV 文档根本没有帮助。
所以我的问题是如何找出对 Pi 相机有用的标志以及这些标志的有效值是什么?
先感谢您。
解决方案
我不是该主题的专家,但我设法使用相机 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()
干杯,
西蒙
推荐阅读
- paypal - PayPal 智能按钮/订单 V2 API 运费
- c# - Dapper - 获取有关已执行查询语句的信息
- python - 如何计算字符串中项目的重复次数?
- python - 找不到文件怎么显示?
- mongodb - $addToSet 使用了太多内存,无法溢出到磁盘。内存限制:104857600 字节
- c# - 基于电子邮件的 Woocommerce API 查找客户详细信息
- mysql - 将子查询转换为联接?
- css - VSCode Prettier 不格式化 CSS
- selenium - 如何使用 Python 填写 JavaScript 表单?
- swift - 我正在尝试使用 CoreBluetooth 模块,但我的部分代码没有运行