当我们在观看视频的时候,尤其是国内的综艺出现的某个不该出现的人脸,就出现了一些奇怪的马赛克,影响我们的观影体验,那么这些马赛克是如何精确的加上去的呢?有什么方法批量实现呢?
本次我们就来用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] + '.mp3'
cmd = 'ffmpeg -i ' + file_name + ' -f mp3 ' + outfile_name
print(cmd)
subprocess.call(cmd, shell=False)
打码
def mask_video(input_video, output_video, mask_path='mask.jpg'):
"""
:param input_video: 需打码的视频
:para