| 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() | |