我希望处理一些视频数据,并希望逐帧进行。我希望看到每个帧的结果,所以希望在帧处理之间暂停,由用户输入(可能是一个键)打破。
有没有有效的方法在Python中实现这一目标? 这是我目前的代码,目前它还没有我不确定这是否是最好的方法呢?
**编辑:**我已经更改了代码以实现我的目标。只需要添加另一行waitKey命令。 :P
import cv2
import scipy.ndimage as ndimage
cap = cv2.VideoCapture("#Some_Video")
while(True):
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
fil_im = ndimage.correlate(gray, '#Some_filter')
cv2.imshow('filtered figure', fil_im)
k = cv2.waitKey(0)
if k == 27:
break
elif k == 32:
continue
# Continues to the next frame on 'space', quits the loop on 'esc' key.
cap.release()
cv2.destroyAllWindows()
答案 0 :(得分:-1)
您可以使用cv2.waitKey(0)
暂停while循环的迭代。参数0意味着代码将无限期地等待您按下一个键,然后再转到下一行代码。
将代码修改为:
while(True):
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
fil_im = ndimage.correlate(gray, '#Some_filter')
cv2.imshow('filtered figure', fil_im)
cv2.waitKey(0)# waits for user prompt here
if cv2.waitKey(0) == 'b':
break
#breaks while loop only if you press b, else it goes to next iteration