我有一个(相当便宜的)网络摄像头,它可以产生比它应该更轻的图像。相机确实有亮度校正 - 当从浅到深移动时,调整是显而易见的 - 但它始终是远亮的。
我正在寻找一种降低亮度而不迭代整个帧的方法(Raspberry Pi上的OpenCV Python绑定)。那存在吗?或者更好的是,有没有一种标准方法可以向网络摄像头发送提示以降低亮度?
import cv2
# create video capture
cap = cv2.VideoCapture(0)
window = cv2.namedWindow("output", 1)
while True:
# read the frames
_,frame = cap.read()
cv2.imshow("output",frame)
if cv2.waitKey(33)== 27:
break
# Clean up everything before leaving
cv2.destroyAllWindows()
cap.release()
答案 0 :(得分:2)
我忘记了Raspberry Pi只是运行常规操作系统。多棒的机器。感谢您的代码确认您只有一个普通的cv2图像。
简单的矢量化缩放(不使用每个像素)应该很简单。下面只是缩放每个像素。如果图像具有主要偏移量,则可以很容易地添加几行来标准化图像。
import numpy
#...
scale = 0.5 # whatever scale you want
frame_darker = (frame * scale).astype(numpy.uint8)
#...
这看起来像你想要的开始吗?
答案 1 :(得分:1)
调整网络摄像头参数的标准方法是VideoCapture set()
方法(提供相机支持界面。根据我的经验,大多数情况都是这样)。这样可以避免自己处理图像的性能开销。
CV_CAP_PROP_BRIGHTNESS
或CV_CAP_PROP_SATURATION
似乎就是您想要的。