OpenCV使过饱和的网络摄像头图像变暗

时间:2014-02-25 14:46:31

标签: python opencv camera webcam

我有一个(相当便宜的)网络摄像头,它可以产生比它应该更轻的图像。相机确实有亮度校正 - 当从浅到深移动时,调整是显而易见的 - 但它始终是远亮的。

我正在寻找一种降低亮度而不迭代整个帧的方法(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()

2 个答案:

答案 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()方法(提供相机支持界面。根据我的经验,大多数情况都是这样)。这样可以避免自己处理图像的性能开销。

VideoCapture::set

CV_CAP_PROP_BRIGHTNESSCV_CAP_PROP_SATURATION似乎就是您想要的。