EdgeAI_Project / app.py
Prabhat51's picture
Create app.py
74acb8d verified
# app.py
import gradio as gr
import cv2, os, pandas as pd
from inference_utils import load_models, process_frame
vehicle_detector, vehicle_classifier, plate_detector, ocr_reader = load_models()
log_path = "vehicle_log.csv"
if not os.path.exists(log_path):
pd.DataFrame(columns=["timestamp", "vehicle_type", "plate_text"]).to_csv(log_path, index=False)
def run_pipeline(video):
cap = cv2.VideoCapture(video)
logs = []
while cap.isOpened():
ret, frame = cap.read()
if not ret: break
frame = cv2.resize(frame, (640, 480))
res = process_frame(frame, vehicle_detector, vehicle_classifier, plate_detector, ocr_reader)
logs.extend(res)
df = pd.DataFrame(logs, columns=["timestamp", "vehicle_type", "plate_text"])
df.to_csv(log_path, mode='a', header=False, index=False)
return f"Processed {len(logs)} vehicles. Log saved to {log_path}."
iface = gr.Interface(fn=run_pipeline,
inputs=gr.Video(label="Upload Video"),
outputs="text",
title="Vehicle ANPR Pipeline",
description="Uploads a video, detects vehicles, classifies type, reads plate and logs to CSV.")
iface.launch()