|
import gradio as gr |
|
from model import predict_defect |
|
from utils import extract_frames |
|
import os |
|
|
|
DATA_DIR = "Data" |
|
|
|
def get_video_choices(): |
|
return [os.path.join(DATA_DIR, f) for f in os.listdir(DATA_DIR) if f.endswith(".mp4")] |
|
|
|
def analyze_selected_video(video_path): |
|
frames = extract_frames(video_path) |
|
results = [predict_defect(frame) for frame in frames] |
|
return results |
|
|
|
demo = gr.Interface( |
|
fn=analyze_selected_video, |
|
inputs=gr.Dropdown(choices=get_video_choices(), label="Select Drone Video"), |
|
outputs=gr.Gallery(label="Detected Road Defects"), |
|
title="Drone-based Road Defect Detection", |
|
description="Highlight road defects (cracks, potholes, misalignments) in red using video frames." |
|
) |
|
|
|
if __name__ == "__main__": |
|
demo.launch() |
|
|