简体   繁体   中英

Cannot Close Video Window in OpenCV

I would like to play a video in openCV using python and close that window at any time, but it is not working.

import numpy as np
import cv2

fileName='test.mp4'  # change the file name if needed

cap = cv2.VideoCapture(fileName)   # load the video

while(cap.isOpened()):
    # play the video by reading frame by frame
    ret, frame = cap.read()
    if ret==True:
        # optional: do some image processing here 

        cv2.imshow('frame',frame)              # show the video
        if cv2.waitKey(1) & 0xFF == ord('q'):
            break
    else:
        break

cv2.waitKey(1)
cv2.destroyAllWindows()
cv2.waitKey(1)

The window opens and starts playing the video, but I cannot close the window.

You can use cv2.getWindowProperty('window-name', index) to detect if the window is closed. I'm not totally sure about the index but this worked for me:

import cv2

filename = 'test.mp4'
cam = cv2.VideoCapture(filename)

while True:
    ret, frame = cam.read()
    if not ret:
        break
    cv2.imshow('asd', frame)
    cv2.waitKey(1)
    if cv2.getWindowProperty('asd', 4) < 1:
        break

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM