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

2022-09-28 21:31:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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

我能做些什么来暂停用户输入两次点击


Tags: 用户importeventlayer视频leniftimecv2winpointscapbreakwhileonmouse
1条回答
网友
1楼 ·

下面的代码似乎适合我。你知道吗

if layer == 2:
    cv2.setMouseCallback(win, onMouse)
    cv2.waitKey(0)

how-should-i-properly-use-cv2-waitkey-when-wanting-to-start-pause-a-video

但是如果列表中有两点,有没有关于如何避开等待键的建议?你知道吗

热门问题