Untitled

 avatar
unknown
plain_text
19 days ago
3.9 kB
2
Indexable
import streamlit as st
import moviepy.editor as mp
import cv2
import numpy as np
from tensorflow.keras.applications import MobileNetV2
from tensorflow.keras.applications.mobilenet_v2 import preprocess_input, decode_predictions

# Load pre-trained MobileNetV2 model for object detection
model = MobileNetV2(weights="imagenet")

def detect_objects(frame):
    """
        Detect objects in a video frame using MobileNetV2.
            """
                resized_frame = cv2.resize(frame, (224, 224))
                    preprocessed_frame = preprocess_input(resized_frame)
                        predictions = model.predict(np.expand_dims(preprocessed_frame, axis=0))
                            decoded_predictions = decode_predictions(predictions, top=3)[0]
                                return decoded_predictions

                                def apply_object_detection(video_path, output_path):
                                    """
                                        Apply object detection to a video and save the output.
                                            """
                                                cap = cv2.VideoCapture(video_path)
                                                    width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
                                                        height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
                                                            fps = int(cap.get(cv2.CAP_PROP_FPS))
                                                                fourcc = cv2.VideoWriter_fourcc(*"mp4v")
                                                                    out = cv2.VideoWriter(output_path, fourcc, fps, (width, height))

                                                                        while cap.isOpened():
                                                                                ret, frame = cap.read()
                                                                                        if not ret:
                                                                                                    break

                                                                                                            # Detect objects in the frame
                                                                                                                    predictions = detect_objects(frame)
                                                                                                                            for _, label, confidence in predictions:
                                                                                                                                        cv2.putText(frame, f"{label}: {confidence:.2f}", (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2)

                                                                                                                                                # Write the frame to the output video
                                                                                                                                                        out.write(frame)

                                                                                                                                                            cap.release()
                                                                                                                                                                out.release()

                                                                                                                                                                def main():
                                                                                                                                                                    st.title(")
Editor is loading...
Leave a Comment