File size: 1,223 Bytes
74acb8d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# 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()