Files

177 lines
5.5 KiB
Python
Raw Permalink Normal View History

2026-03-15 13:27:50 +00:00
import tkinter as tk
from tkinter import messagebox, filedialog
import cv2
from PIL import Image, ImageTk
import numpy as np
import tensorflow as tf
import pygame
import time
from moviepy.editor import VideoFileClip
is_paused = False
cap = None
model = None
audio_path = None
def validar_login():
user = userdig.get()
password = passdig.get()
if user == "admin" and password == "12345":
login.destroy()
abrir_menu_principal()
else:
messagebox.showerror("Erro", "User ou password incorretos!")
def abrir_menu_principal():
menu_principal = tk.Tk()
menu_principal.title("Menu Principal")
menu_principal.geometry("400x300")
label_menu = tk.Label(menu_principal, text="Escolha uma opção", font=("Arial", 16))
label_menu.pack(pady=20)
botao_analise_video = tk.Button(menu_principal, text="Analisar Videos", width=20, command=abrir_janela_principal)
botao_analise_video.pack(pady=10)
botao_carregar_modelo = tk.Button(menu_principal, text="Carregar Modelo", width=20, command=abrir_janela_modelo)
botao_carregar_modelo.pack(pady=10)
botao_configuracoes = tk.Button(menu_principal, text="Configurações", width=20, command=abrir_janela_configuracoes)
botao_configuracoes.pack(pady=10)
menu_principal.mainloop()
# Janela de análise de vídeo
def abrir_janela_principal():
global root, video, placeholder_text, play_button, pause_button
root = tk.Tk()
root.title("Análise de Vídeo")
root.geometry("1000x800")
botao_carregar_video = tk.Button(root, text="Carregar Vídeo", command=carregar_video)
botao_carregar_video.place(relx=0.5, rely=0.05, anchor='n', x=5, y=10)
video = tk.Label(root, width=70, height=20, bg="grey")
video.place(x=50, y=100)
botao_sair = tk.Button(root, text="Sair", command=sair)
botao_sair.place(relx=1.0, rely=1.0, anchor='se', x=-30, y=-30)
play_button = tk.Button(root, text="Play", command=play_video)
play_button.place(relx=0.3, rely=0.05, anchor='n', x=10, y=10)
pause_button = tk.Button(root, text="Pause", command=pause_video)
pause_button.place(relx=0.4, rely=0.05, anchor='n', x=20, y=10)
root.mainloop()
# Janela para carregar o modelo
def abrir_janela_modelo():
janela_modelo = tk.Tk()
janela_modelo.title("Carregar Modelo")
janela_modelo.geometry("300x200")
label_modelo = tk.Label(janela_modelo, text="Carregar Modelo de IA", font=("Arial", 14))
label_modelo.pack(pady=20)
botao_carregar_modelo = tk.Button(janela_modelo, text="Carregar Modelo", command=carregar_modelo)
botao_carregar_modelo.pack(pady=20)
janela_modelo.mainloop()
# Janela de configurações
def abrir_janela_configuracoes():
janela_config = tk.Tk()
janela_config.title("Configurações")
janela_config.geometry("300x200")
label_config = tk.Label(janela_config, text="Configurações", font=("Arial", 14))
label_config.pack(pady=20)
# Aqui você pode adicionar elementos de configuração, como opções de caminho de arquivos, etc.
janela_config.mainloop()
def carregar_video():
global audio_path
video_path = filedialog.askopenfilename(filetypes=[("Video Files", "*.mp4 *.avi *.mkv")])
if video_path:
reproduzir_video(video_path)
placeholder_text.place_forget()
def reproduzir_video(video_path):
global cap, audio_path
cap = cv2.VideoCapture(video_path)
video = tk.Label(root, width=500, height=400, bg="grey")
video.place(x=50, y=100)
pygame.mixer.init()
video_clip = VideoFileClip(video_path)
audio_path = "temp_audio.mp3"
video_clip.audio.write_audiofile(audio_path)
pygame.mixer.music.load(audio_path)
pygame.mixer.music.play(-1)
mostrar_frame()
def mostrar_frame():
global is_paused, cap, video
if not is_paused and cap is not None:
ret, frame = cap.read()
if ret:
frame_altura, frame_largura = frame.shape[:2]
ratio = min(1000 / frame_largura, (500 - 100) / frame_altura)
novo_tamanho = (int(frame_largura * ratio), int(frame_altura * ratio))
frame_redimensionado = cv2.resize(frame, novo_tamanho)
frame_rgb = cv2.cvtColor(frame_redimensionado, cv2.COLOR_BGR2RGB)
imagem = Image.fromarray(frame_rgb)
imagem_tk = ImageTk.PhotoImage(image=imagem)
video.imgtk = imagem_tk
video.config(image=imagem_tk, width=imagem_tk.width(), height=imagem_tk.height())
video.after(20, mostrar_frame)
else:
cap.release()
def play_video():
global is_paused
is_paused = False
mostrar_frame()
pygame.mixer.music.unpause()
def pause_video():
global is_paused
is_paused = True
pygame.mixer.music.pause()
def sair():
global cap, audio_path
if cap is not None:
cap.release()
pygame.mixer.music.stop()
pygame.mixer.music.unload()
time.sleep(1)
if audio_path:
import os
try:
os.remove(audio_path)
except PermissionError:
print("Erro ao remover o arquivo de áudio.")
root.destroy()
# Janela de login inicial
login = tk.Tk()
login.title("Login")
login.geometry("300x200")
label_usuario = tk.Label(login, text="Usuário:")
label_usuario.pack(pady=5)
userdig = tk.Entry(login)
userdig.pack(pady=5)
label_senha = tk.Label(login, text="Senha:")
label_senha.pack(pady=5)
passdig = tk.Entry(login, show="*")
passdig.pack(pady=5)
botao_login = tk.Button(login, text="Login", command=validar_login)
botao_login.pack(pady=20)
login.mainloop()