如何解决Python Opencv和Tkinter:如何销毁视频提要并再次调用该页面
我正在尝试获得以下内容:在第1页上,我可以获得OpenCV视频提要和转到第2页的“配置”按钮。单击该按钮后,它必须销毁第1页,加载第2页并关闭视频。提要。
在第2页上,我有一些GPIO按钮和转到第1页的第1页按钮。单击此按钮后,必须销毁第2页,加载第1页并开始实时视频馈送。
使用以下代码,一切正常,但是当我按第1页按钮时,该应用程序无法启动视频供稿。我该如何改善代码?
from imutils.video import VideoStream
import numpy as np
import argparse
import imutils
import time
import cv2
import tkinter as tk
from PIL import Image,ImageTk
from datetime import datetime
def show_frame():
frame = vs.read()
frame = imutils.resize(frame,width=400)
frame = cv2.cvtColor(frame,cv2.COLOR_BGR2RGBA)
frame = Image.fromarray(frame)
frame = ImageTk.PhotoImage(image=frame)
display.img = frame
display.configure(image=frame)
window.after(8,show_frame)
################ fuction to destroy page 1 and load page 2 ####################
def on_close1():
window.destroy()
page_2()
################ fuction to destroy page 2 and load page 1 ####################
def on_close2():
window1.destroy()
page_1()
show_frame()
########################### fuction for Page1 ################################
def page_1():
global window
global vs
global display
global imageFrame
window = tk.Tk() #Makes main window
window.title("Page 1")
window.config(background="#FFFFFF")
#Graphics window
imageFrame = tk.Frame(window,width=600,height=600)
imageFrame.grid(row=2,column=1,padx=2,pady=2)
print("[INFO] starting video stream...")
vs = VideoStream(src=0).start()
print (vs)
time.sleep(2.0)
display = tk.Label(imageFrame)
display.grid(row=2,column=0,columnspan=2,sticky='news',padx=10,pady=2) #Display 1
myLable2 = tk.Label(imageFrame,text = "TEMP",width=10,bg='white',fg="black",font=("Helvetica",16))
myLable2.grid(sticky='w',ipadx= 8,row= 3,column= 0)
myLable3 = tk.Entry(imageFrame,width=5,16))
myLable3.grid(sticky='w',column= 1)
mybtn = tk.Button(imageFrame,text="configuration",12),command=on_close1)
mybtn.grid(row= 6,column= 1)
########################### fuction for Page2 ################################
def page_2():
#Graphics window
global window1
window1 = tk.Tk() #Makes main window
window1.title("Page2")
window1.config(background="#FFFFFF")
global imageFrame1
imageFrame1 = tk.Frame(window1,height=600)
imageFrame1.grid(row=2,pady=2)
myLable2_2 = tk.Button(imageFrame1,text="GPIO 1",command=gpio)
myLable2_2.grid(sticky='w',row= 2,column= 0)
myLable3_3 = tk.Button(imageFrame1,text="GPIO 2",command=gpio)
myLable3_3.grid(sticky='w',column= 1)
myLable8_8 = tk.Button(imageFrame1,text="Page 1",command= on_close2)
myLable8_8.grid(sticky='w',row= 5,column= 1)
########################### fuction for GPIO ################################
def gpio():
pass
################ Beginning of the program #########################
if __name__ == '__main__':
page_1()
show_frame() #Display
window.mainloop() #Starts GUI
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。