在标签中显示视频



我目前正在做一个项目,其中包括在gui中显示视频。该软件运行在树莓派上,用python编写。我正在使用tkinter作为gui。

当我运行playvideo函数时,只显示最后一帧。一开始我以为覆盆子是要慢,但也插了个睡(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

相关内容

  • 没有找到相关文章

最新更新