如何暂停OpenCV视频视频流以获取积分?

时间:2019-11-17 20:52:03

标签: python python-3.x opencv

我有一个运行有视频的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

该如何暂停用户输入两次单击

1 个答案:

答案 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

但是如果列表中有两点,关于如何转义等待键的任何建议?