使用opencv和python在已保存的视频上单击鼠标事件

时间:2016-04-04 15:58:50

标签: python-3.x opencv

我想在保存的视频中绘制一个矩形。绘制矩形时,视频必须冻结。我成功地在图像上绘制了一个矩形,但我不知道如何使用opencv和python在保存的视频上执行相同操作。

1 个答案:

答案 0 :(得分:1)

我需要使用opencv的ROI选择机制,我终于想出了如何实现它。

可以在此处找到实施(opencvdragrect)。它使用opencv 3.1.0和Python 2.7

对于已保存的视频,直到您没有阅读另一帧并显示该视频时,该视频才会被视为已暂停。

就如何将其添加到暂停的视频(框架)而言,下面的代码可能有所帮助。

import cv2
import selectinwindow
wName = "select region"

video = cv2.VideoCapture(videoPath)

while(video.isOpened()):

    # Read frame 
    ret, RGB = video.read()
    frameCounter += 1

    if frameCounter == 1 : # you can pause any frame you like

        rectI = selectinwindow.dragRect
        selectinwindow.init(rectI, I, wName, I.shape[1], I.shape[0])
        cv2.namedWindow(wName)
        cv2.setMouseCallback(wName, selectinwindow.dragrect, rectI)

        while True:

            # display the image
            cv2.imshow(wName, rectI.image)
            key = cv2.waitKey(1) & 0xFF

            # if returnflag is set break 
            # this loop and run the video
            if rectI.returnflag == True:
                break

        box = [rectI.outRect.x,rectI.outRect.y,rectI.outRect.w,rectI.outRect.h]

    # process the video
    # ...
    # ...

在(opencvdragrect)库中,使用双击停止矩形选择过程并继续视频。

希望这有帮助。