如何在阿里云自主建网站,北京赛车手机网站建设,可以做问卷赚钱的网站,网站主机安全前言
嗨呀嗨呀#xff0c;最近重温了一档综艺节目 至于叫什么 这里就不细说了
老是看着看着就会看到一堆马赛克#xff0c;由于太好奇了就找了一下原因#xff0c;结果是因为某艺人塌房了…虽然但是 看综艺的时候满影响美观的
咳咳#xff0c;这里我可不是来教你们如何解…前言
嗨呀嗨呀最近重温了一档综艺节目 至于叫什么 这里就不细说了
老是看着看着就会看到一堆马赛克由于太好奇了就找了一下原因结果是因为某艺人塌房了…虽然但是 看综艺的时候满影响美观的
咳咳这里我可不是来教你们如何解码的我是来教你们如何打码的嘿嘿
那今天就在这分享一下 视频打码功能如何用python来实现 准备工作
环境咱们还是使用 Python3.8 和 pycharm2021 即可
实现原理
将视频分为音频和画面画面中出现人脸和目标比对相应人脸进行打码处理后的视频添加声音
模块
手动安装一下 cv2 模块 pip install opencv-python 安装 安装遇到报错可以私信我
素材工具
我们需要安装一下 ffmpeg 音视频转码工具 代码解析
导入模块
import cv2
import face_recognition # 人脸识别库 99.7% cmake dlib face_recognition
import subprocess视频转为音频
def video2mp3(file_name)::param file_name: 视频文件路径:return:outfile_name file_name.split(.)[0] .mp3cmd ffmpeg -i file_name -f mp3 outfile_nameprint(cmd)subprocess.call(cmd, shellFalse)进行打码
# 源码领取309488165 ###
def mask_video(input_video, output_video, mask_pathmask.jpg)::param input_video: 需打码的视频:param output_video: 打码后的视频:param mask_path: 打码图片:return:# 读取图片mask cv2.imread(mask_path)# 读取视频cap cv2.VideoCapture(input_video)# 视频 fps width heightv_fps cap.get(5)v_width cap.get(3)v_height cap.get(4)设置写入视频参数 格式MP4
画面大小
size (int(v_width), int(v_height))
fourcc cv2.VideoWriter_fourcc(m, p, 4, v)输出视频
out cv2.VideoWriter(output_video, fourcc, v_fps, size)已知人脸 known_image face_recognition.load_image_file(tmr.jpg)biden_encoding face_recognition.face_encodings(known_image)[0]cap cv2.VideoCapture(input_video)while (cap.isOpened()):ret, frame cap.read()if ret:# 检测人脸# 人脸区域face_locations face_recognition.face_locations(frame)for (top_right_y, top_right_x, left_bottom_y, left_bottom_x) in face_locations:print((top_right_y, top_right_x, left_bottom_y, left_bottom_x))unknown_image frame[top_right_y - 50:left_bottom_y 50, left_bottom_x - 50:top_right_x 50]if face_recognition.face_encodings(unknown_image) ! []:unknown_encoding face_recognition.face_encodings(unknown_image)[0]# 对比人脸results face_recognition.compare_faces([biden_encoding], unknown_encoding)# [True]# 贴图if results [True]:mask cv2.resize(mask, (top_right_x - left_bottom_x, left_bottom_y - top_right_y))frame[top_right_y:left_bottom_y, left_bottom_x:top_right_x] maskout.write(frame)else:break音频添加到画面
def video_add_mp3(file_name, mp3_file)::param file_name: 视频画面文件:param mp3_file: 视频音频文件:return:outfile_name file_name.split(.)[0] -f.mp4subprocess.call(ffmpeg -i file_name -i mp3_file -strict -2 -f mp4 outfile_name, shellFalse)完整代码 点击文末名片领取即可