gpt4 book ai didi

python - 如何使用图像序列在 tkinter 上显示视频

转载 作者:行者123 更新时间:2023-12-04 17:24:25 28 4
gpt4 key购买 nike

我正在尝试构建一个将图像序列显示为视频的 GUI。图像是 numpy 数组。

当我尝试一次显示一张图像时,代码可以正常工作,但当我尝试按顺序运行它们时,它会崩溃。

代码:

from tkinter import *
from scipy.io import loadmat
from PIL import ImageTk, Image
import time
data = loadmat('DepthFrames.mat')['DepthFrames'].squeeze(axis=0)
print(data.shape)
counter = 0
root = Tk()
image = ImageTk.PhotoImage(image = Image.fromarray(data[counter]))
root.title("WUDU VIDEOS LABEL TOOL")
myLabel = Label(root, image = image)
myLabel.grid(row = 0)
def changeImg():
global counter
counter +=1
print(counter)
image = ImageTk.PhotoImage(image = Image.fromarray(data[counter]))
myLabel.configure(image = image)
myLabel.image = image

def playVideo():
for i in range(10):
image = ImageTk.PhotoImage(image = Image.fromarray(data[i]))
myLabel.configure(image = image)
myLabel.image = image
time.sleep(0.03333)
my_Button = Button(text = "Play video",command = playVideo)
my_Button.grid(row = 1)
root.mainloop()

最佳答案

time.sleep 阻塞了 tkinter 的主线程。您的代码将卡住 GUI,直到 for 循环完成并且图像将显示为最后一张图像。有关详细信息,请参阅 this发布。

您需要使用 after方法。像这样:

def playVideo(frame=0):
try:
image = ImageTk.PhotoImage(image = Image.fromarray(data[frame]))
except IndexError:
return
myLabel.configure(image = image)
myLabel.image = image
root.after(33, playVideo, frame+1)

关于python - 如何使用图像序列在 tkinter 上显示视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64289991/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com