|
import streamlit as st |
|
import cv2 |
|
import tempfile |
|
import numpy as np |
|
from NudeDetector.NudeDetector import NudeDetector |
|
|
|
|
|
def nude_video_app(): |
|
st.title("Video Nudity Detection App") |
|
uploaded_file = st.file_uploader("Upload a video", type=["mp4", "avi"]) |
|
|
|
if uploaded_file is not None: |
|
with tempfile.NamedTemporaryFile(delete=False) as temp_file: |
|
temp_file.write(uploaded_file.read()) |
|
uploaded_video_path = temp_file.name |
|
cap = cv2.VideoCapture(uploaded_video_path) |
|
skip_interval = 20 |
|
frame_index = 0 |
|
placeholder1 = st.empty() |
|
col1, col2 = st.columns([1, 1]) |
|
with col1: |
|
placeholder2 = st.empty() |
|
with col2: |
|
placeholder3 = st.empty() |
|
while True: |
|
success, img = cap.read() |
|
if not success: |
|
break |
|
if frame_index % skip_interval == 0: |
|
detector = NudeDetector(img) |
|
|
|
if detector.is_nude(): |
|
placeholder1.error("Image is Nude") |
|
else: |
|
placeholder1.success("Image is Safe") |
|
placeholder2.image(cv2.cvtColor(detector.visualize(), cv2.COLOR_BGR2RGB), caption='Visualized Image', use_column_width=True) |
|
placeholder3.image(cv2.cvtColor(detector.blur_nudity(), cv2.COLOR_BGR2RGB), caption='Nudity Blurred Image', use_column_width=True) |
|
frame_index += 1 |
|
|
|
|
|
if __name__ == "__main__": |
|
nude_video_app() |
|
|