import cv2 import tempfile from utils.fault_detection import detect_faults from utils.image_processing import preprocess_image import os def process_video(video_path, frame_interval=30): cap = cv2.VideoCapture(video_path) fps = cap.get(cv2.CAP_PROP_FPS) frame_count = 0 fault_report = [] annotated_frames = [] fourcc = cv2.VideoWriter_fourcc(*'mp4v') temp_out = tempfile.NamedTemporaryFile(delete=False, suffix=".mp4") out = cv2.VideoWriter(temp_out.name, fourcc, fps, (int(cap.get(3)), int(cap.get(4)))) while cap.isOpened(): ret, frame = cap.read() if not ret: break if frame_count % frame_interval == 0: processed = preprocess_image(frame) faults, annotated = detect_faults(processed) for f in faults: f["frame"] = frame_count fault_report.append(f) out.write(annotated) else: out.write(frame) frame_count += 1 cap.release() out.release() return temp_out.name, fault_report