【发布时间】:2020-04-03 17:07:00
【问题描述】:
我正在使用 OpenCV3 和 Python 3.7 从我的网络摄像头捕获实时视频流,我想控制亮度和对比度。我无法使用 OpenCV 的 cap.set(cv2.CAP_PROP_BRIGHTNESS, float) 和 cap.set(cv2.CAP_PROP_BRIGHTNESS, int) 命令控制相机设置,因此我想在读取每一帧后应用对比度和亮度。每个捕获的图像的 Numpy 数组是 (480, 640, 3)。以下代码正确显示视频流,无需尝试更改亮度或对比度。
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
当我使用 Numpy 的clip() 方法来控制对比度和亮度时,即使我设置了contrast = 1.0(不改变对比度)和brightness = 0(不改变亮度),我也会得到一个褪色的视频流。这是我控制对比度和亮度的尝试。
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
contrast = 1.0
brightness = 0
frame = np.clip(contrast * frame + brightness, 0, 255)
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
如何使用 OpenCV 控制视频流的对比度和亮度?
【问题讨论】:
标签: python opencv video brightness contrast