Spaces:
Sleeping
Sleeping
import cv2 | |
import streamlit as st | |
import tempfile | |
try: | |
face_cascade = cv2.CascadeClassifier('XML/faces.xml') | |
except Exception: | |
st.write("Error loading cascade classifiers") | |
def censor_face(filePath): | |
#output_file = 'Output/censored_' + str(filePath.name) + '.mp4' | |
video=cv2.VideoCapture(filePath.name) | |
success, frame = video.read() | |
height = frame.shape[0] | |
width = frame.shape[1] | |
#st.write(height, width) | |
#gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY) | |
#st.write("Frame: " + str(frame)) | |
tfile2 = tempfile.NamedTemporaryFile(delete=False, suffix='.mp4') | |
#tfile2.write("Censored.mp4") | |
output=cv2.VideoWriter(tfile2.name, cv2.VideoWriter_fourcc(*'mp4v'), 30, (width, height)) | |
while success: | |
faces = face_cascade.detectMultiScale(frame, 1.1, 4) | |
for (x,y, w, h) in faces: #multiple faces in a video | |
frame[y:y+h, x:x+w] = cv2.blur(frame[y:y+h, x:x+w], (150, 150)) | |
#st.write("frame") | |
output.write(frame) | |
success, frame = video.read() | |
output.release() | |
video.release() | |
st.write(tfile2.name) | |
st.write(tfile2) | |
result_video = open(tfile2.name, "rb") | |
vid_bytes = result_video.read() | |
#with open(tfile2.name, "rb") as file: | |
# btn = st.download_button( | |
# label="Download video", | |
# data=file, | |
# file_name=tfile2.name, | |
# mime="video/mp4" | |
# ) | |
#video_file = open(tfile2.name, 'rb') | |
#video_bytes = video_file.read() | |
st.video(vid_bytes) | |
return tfile2 |