在标签中显示视频

show video in label

我目前正在从事一个项目,其中包括在图形用户界面中显示视频。 软件运行s在raspberry pi上,写在python。我正在为 gui 使用 tkinter。

当我 运行 播放视频功能时,只显示最后一帧。 一开始我以为覆盆子是慢的,但在插入睡眠(3)后也没有任何改变。

有人看到我的错误吗?

    def play_video():
        cap = cv2.VideoCapture('video.h264')
        ret = True
        while(ret):
            ret, frame = cap.read()
            time.sleep(3)
            if ret:
                print "in"
                img = Image.fromarray(frame)
                imgtk = ImageTk.PhotoImage(image=img)
                show_video_label .imgtk = imgtk
                show_video_label .configure(image=imgtk)
                show_video_label._image_cache = imgtk 

        cap.release()

非常感谢!!!

您不能在 UI 应用程序中使用这样的 while 循环,因为它会阻止处理系统事件。您必须保持 mainloop 个处理事件才能继续处于活动状态。

在这种情况下,您应该创建一个捕获并显示单个帧的函数,然后在 'start_video' 函数中,使用 after 方法安排调用以捕获帧,并且每次您捕获帧再次使用 after 安排下一次捕获。如果您保留 after 调用返回的令牌,stop_video 方法可以只取消最后一个 after