Tkinter App
Tkinter App
Tkinter App
import cv2
from moviepy.editor import VideoFileClip
from sklearn.externals._pilutil import imresize
from tensorflow.keras.models import load_model
from tkinter import *
from tkinter import filedialog
from PIL import ImageTk, Image
from os import startfile
from os import path
class App:
# Create the tkinter interface
master = Tk()
# Create lanes object
lanes = Lanes()
def __init__(self):
self.master.title('Automated Lane Detection')
self.master.iconbitmap(
r'C:\Users\Alex\Desktop\Facultate\proiect_diploma\lane_detection\laneDetection_deep
2\interface\ico.ico')
self.master.geometry('640x420')
def main(self):
def resizer(e):
global bg1, resized_bg, new_bg
bg1 = Image.open('interface/background.jpg')
bg = ImageTk.PhotoImage(file='interface/background.jpg')
canvas = Canvas(self.master, width=640, height=420)
canvas.pack(fill='both', expand=True)
canvas.create_image(0, 0, image=bg, anchor='nw')
self.master.bind('<Configure>', resizer)
self.master.mainloop()
def open_output(self):
if path.exists(self.output_video):
startfile(self.output_video)
else:
var = StringVar()
label = Label(self.master, textvariable=var, font='Helvetica 15 bold')
var.set('The file does not exist!')
label.place(x=self.master.winfo_width() / 4,
y=self.master.winfo_height() - 100)
label.after(2000, label.destroy)
def load_model(self):
file = filedialog.askopenfilename()
var = StringVar()
label = Label(self.master, textvariable=var, font='Helvetica 15 bold')
if file.endswith('.h5'):
var.set('Model loaded successfully!')
label.place(x=self.master.winfo_width() / 4,
y=self.master.winfo_height() - 100)
self.model = load_model(file)
else:
var.set('Model extension incorrect!')
label.place(x=self.master.winfo_width() / 4,
y=self.master.winfo_height() - 100)
label.after(2000, label.destroy)
def upload_video(self):
file = filedialog.askopenfilename()
var = StringVar()
label = Label(self.master, textvariable=var, font='Helvetica 15 bold')
if file.endswith('.mp4'):
var.set('Video uploaded successfully!')
label.place(x=self.master.winfo_width() / 4,
y=self.master.winfo_height() - 100)
self.input_video = file
else:
var.set('The video has incorrect format!\nExpected: ".mp4"')
label.place(x=self.master.winfo_width() / 4,
y=self.master.winfo_height() - 100)
label.after(3000, label.destroy)
def draw_lines(self):
var1 = StringVar()
var2 = StringVar()
label1 = Label(self.master, textvariable=var1, font='Helvetica 15 bold')
label2 = Label(self.master, textvariable=var2, font='Helvetica 10 bold')
var1.set('Please wait. The video is being processed')
label1.place(x=self.master.winfo_width() / 4, y=self.master.winfo_height()
- 100)
label1.destroy()
# plt.imshow(image)
# plt.show()
return result
app = App()
app.main()