Spaces:
Sleeping
Sleeping
File size: 1,920 Bytes
afdbcb1 7acc140 ad5fb46 018419b afdbcb1 7ebb572 86c36ee 7ebb572 546f703 afdbcb1 1ff395f 0032752 1ff395f 1e29126 afdbcb1 ad5fb46 caff417 546f703 caff417 d333a65 7410fcb ad5fb46 7410fcb afdbcb1 caff417 afdbcb1 6713a04 afdbcb1 ab1b324 018419b cb89ead ecc43ff |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
import cv2
import streamlit as st
import tempfile
from ffmpeg import FFmpeg
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)
ffmpeg = (
FFmpeg()
.option("y")
.input(tfile2.name)
.output(
tfile2.name,
{"codec:v": "libx264"},
vf="scale=1280:-1",
preset="veryslow",
crf=24,
)
)
ffmpeg.execute()
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 |