我在python中使用openCV模块,用于从笔记本电脑的网络摄像头捕获视频。我有一些不寻常的行为。以下是我正在使用的代码
class bnw_video() :
def __init__(self) :
self.cap = cv2.VideoCapture(0)
self.cap.set(3,320)
self.cap.set(4,240)
self.start_video()
def start_video(self) :
while(True) :
ret,frame = self.cap.read(0)
cv2.imshow('frame',frame)
time.sleep(0)
bnw_video()
我使用上面的代码显示网络摄像头主动捕获的视频。当time.sleep值为0时,视频将完美显示。但是如果time.sleep值为0.1,则视频只显示一帧,然后停止。
我不明白为什么会这样做。
答案 0 :(得分:0)
您应该使用cv2.waitKey(delay_in_ms)
,而不是time.sleep(...)
。
来自OpenCV doc:
此函数是HighGUI中唯一可以获取和处理事件的方法,因此需要定期调用它以进行正常事件处理,除非在负责事件处理的环境中使用HighGUI。
如果您不打电话给waitKey
,则不会刷新Windows内容(由imshow
创建)。