我正在尝试将网络摄像头中的最后50帧保存到列表中,然后播放这些帧。当我尝试显示框架时,显示窗口显示为灰色并表示无响应。如果我在while循环中显示框架,则会显示它,但是如果我尝试从列表中显示框架,则会在上述问题中保存它们。这是我正在运行的代码。
cap = cv2.VideoCapture(0)
image_list = []
count = 0
while(True):
# Capture frame-by-frame
ret, frame = cap.read()
image_list.append(frame)
#Display the resulting frame
#cv2.imshow('frame',frame) <--- this will show me my live frame by frame capture
if count >= 50:
break
count += 1
# When everything is done, release the capture
cap.release()
for image in image_list:
cv2.imshow("frame", image)
sleep(1)
答案 0 :(得分:2)
如果您没有使用tkinter或Qt等适当的UI框架,则必须致电
cv2.waitKey(500)
定期,因为这是OpenCv的Highgui组件处理事件(并更新显示)的唯一方法。否则,highgui只会“挂断”。
for image in image_list:
cv2.imshow("frame", image)
cv2.waitKey(500)
摘录自docs:
注意
此函数是HighGUI中唯一可以获取和处理的方法 事件,因此对于正常事件需要定期调用 除非在需要以下操作的环境中使用HighGUI,否则将进行处理 关心事件处理。