我有一个运行有视频的OpenCV循环。我想将视频暂停在第二帧,并让用户单击两点。
import time
import cv2
points=[]
layer = 0
def onMouse(event, x, y, flags, param):
if len(points) < 2:
if event == cv2.EVENT_LBUTTONDOWN:
points.append((x,y))
cap = cv2.VideoCapture(path)
while cap.isOpened():
layer +=1
ret, im = cap.read()
if ret == True:
cv2.imshow(win, im)
key = cv2.waitKey(100)
if len(points) < 2 and layer==2:
cv2.setMouseCallback(win, onMouse)
if key == ord("q"):
break
else:
break
cap.release()
cv2.destroyAllWindows()
但是先前的代码不会暂停供用户输入。
如果我尝试:
time.sleep(5)
整个程序冻结。
我也尝试过在while循环中使用while循环,但也会冻结
if layer == 2:
while len(points) < 2:
cv2.setMouseCallback(win, onMouse)
if len(points) == 2:
break
该如何暂停用户输入两次单击
答案 0 :(得分:0)
以下代码似乎对我有用。
if layer == 2:
cv2.setMouseCallback(win, onMouse)
cv2.waitKey(0)
how-should-i-properly-use-cv2-waitkey-when-wanting-to-start-pause-a-video
但是如果列表中有两点,关于如何转义等待键的任何建议?