答案 0 :(得分:0)
我建议您阅读tkinter的文档,因为它有大量示例说明如何解决您的问题。我制作了一个示例GUI,它使用随机像素图片更新了GUI上的图像。请注意,有许多不同的方法可以做到这一点。就我而言,我开设了一门课程,在其中显示框架和按钮。该按钮调用一个函数以随机化图像(或根据情况更改为下一个图像),并调用该函数以新图像更新帧。希望它能给您一个快速的开始。干杯!
P.S .:对于多张图片,请使用更多标签和功能;)
代码:
import tkinter as tk
from tkinter import *
import cv2
import numpy as np
from PIL import Image, ImageTk
class DisplayImage:
def __init__(self, master):
self.master = master
master.title("GUI")
self.image_frame = Frame(master, borderwidth=0, highlightthickness=0, height=20, width=30, bg='white')
self.image_frame.pack()
self.image_label = Label(self.image_frame, highlightthickness=0, borderwidth=0)
self.image_label.pack()
self.Next_image = Button(master, command=self.read_image, text="Next image", width=17, default=ACTIVE, borderwidth=0)
self.Next_image.pack()
def display_image(self, event=None):
self.cv2image = cv2.cvtColor(self.img, cv2.COLOR_BGR2RGBA)
self.from_array = Image.fromarray(self.cv2image)
self.imgt = ImageTk.PhotoImage(image=self.from_array)
self.image_label.configure(image=self.imgt)
def read_image(self, event=None):
self.img = np.random.randint(255, size=(250,250,3),dtype=np.uint8)
self.master.after(10, self.display_image)
def main():
root = tk.Tk()
GUI = DisplayImage(root)
GUI.read_image()
root.mainloop()
if __name__ == '__main__':
main()
输出:
答案 1 :(得分:0)
如果可以将tkinter与包装一起使用,则PySimpleGUI是一个不错的选择。
本周发布了一个新的演示应用程序,该应用程序演示了如何在GUI窗口中显示网络摄像头。另一个发布的Demo再次在GUI窗口中使用OpenCV播放视频文件。
生成该屏幕截图的代码可以在以下位置找到: Open and Play Video Using PySimpleGU + OpenCV
您可以从演示开始,然后通过添加更多按钮进行扩展。