-1

当我尝试运行两次相同的功能(它是一个从文件夹播放随机视频的功能)时,我遇到了一个问题。当我尝试创建一个“for 循环”来重放该函数一定次数时,我发现了这个问题。它不会出现特定的错误,它只是通过我接下来要向您展示的“if 语句”来解决它

if (vid.isOpened()== False):
        print("El archivo de mierda no se pudo abrir")

所以在我的屏幕上只会弹出消息“El archivo de mierda no se pudo abrir”。如果我尝试注释掉该“if 语句”,则第二次该函数将被忽略,并且第二个视频不会播放。我该如何避免或解决这个问题?整个代码是下一个:

import cv2
import numpy as np
import os, random

nombr = random.choice(os.listdir(r"C:\\Users\\JLHI6\\Desktop\\CODE\\Catu\\videos"))
videa = r"C:\\Users\\JLHI6\\Desktop\\CODE\\Catu\\videos\\" + nombr
vid = cv2.VideoCapture(videa)

def correr_video():    
    if (vid.isOpened()== False):
        print("El archivo de mierda no se pudo abrir")

    while (vid.isOpened()):
        ret, frame = vid.read()
        if ret == True:
            cv2.imshow("Frame", frame)
            if cv2.waitKey(25) & 0xFF == ord("q"):
                break

        else:
            break

    vid.release()
    cv2.destroyAllWindows()

correr_video()
correr_video()
4

1 回答 1

0

在函数结束时vid.release()关闭视频(docs),因此要再次播放视频,您必须使用重新打开它vid = cv2.VideoCapture(videa)

为了更容易播放不同的视频,您可以稍微重构一下代码:

def correr_video(vid_file): 
    vid = cv2.VideoCapture(vid_file)
    [rest of code in function]


correr_video(videa)
于 2019-11-11T21:40:02.663 回答