我正在使用OpenCV3和Python 3.7从我的网络摄像头捕获实时视频流,我想要控制亮度和对比度。我无法使用OpenCV的
当我使用Numpy的
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控制视频流的对比度和亮度?
cv2.normalize()
而不是numpy.clip()
,因为cv2.normalize()
不会剪切边缘。谢谢! - slalomchipcv2.normalize(hist, None, alpha=0, beta=1.5*255, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_8U)
。 - fmw42