Spaces:
Sleeping
Sleeping
Upload app.py
Browse files- src/app.py +37 -0
src/app.py
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Streamlit app will be generated here
|
2 |
+
import streamlit as st
|
3 |
+
import cv2
|
4 |
+
import numpy as np
|
5 |
+
from src.preprocess import preprocess_frame
|
6 |
+
from src.predict import load_trained_model, predict_violence
|
7 |
+
import tempfile
|
8 |
+
|
9 |
+
st.set_page_config(layout="wide")
|
10 |
+
st.title("🔍 Violence Detection in Video")
|
11 |
+
st.markdown("Upload a video and let the model detect violent scenes in real-time.")
|
12 |
+
|
13 |
+
uploaded_file = st.file_uploader("Upload a video", type=["mp4", "avi"])
|
14 |
+
model = load_trained_model("models/violence_model.h5")
|
15 |
+
|
16 |
+
if uploaded_file is not None:
|
17 |
+
tfile = tempfile.NamedTemporaryFile(delete=False)
|
18 |
+
tfile.write(uploaded_file.read())
|
19 |
+
cap = cv2.VideoCapture(tfile.name)
|
20 |
+
stframe = st.empty()
|
21 |
+
|
22 |
+
while cap.isOpened():
|
23 |
+
ret, frame = cap.read()
|
24 |
+
if not ret:
|
25 |
+
break
|
26 |
+
|
27 |
+
processed = preprocess_frame(frame)
|
28 |
+
pred = predict_violence(model, processed)
|
29 |
+
label = "Violent" if pred <= 0.5 else "Non-Violent"
|
30 |
+
color = (0, 0, 255) if label == "Violent" else (0, 255, 0)
|
31 |
+
|
32 |
+
cv2.putText(frame, f'{label} ({pred:.2f})', (10, 30),
|
33 |
+
cv2.FONT_HERSHEY_SIMPLEX, 1, color, 2)
|
34 |
+
stframe.image(frame, channels="BGR")
|
35 |
+
|
36 |
+
cap.release()
|
37 |
+
|