Python实现对视频自动打码

article/2025/10/7 1:55:18

我们在观看视频的时候,有时候会出现一些奇怪的马赛克,影响我们的观影体验,那么这些马赛克是如何精确的加上去的呢?

在这里插入图片描述
本次我们就来用Python实现对视频自动打码!

准备工作

环境咱们还是使用 Python3.8 和 pycharm2021 即可

实现原理

1.将视频分为音频和画面;

2.画面中出现人脸和目标比对,相应人脸进行打码;

3.处理后的视频添加声音;

模块

手动安装一下 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_nameprint(cmd)subprocess.call(cmd, shell=False)

打码

def mask_video(input_video, output_video, mask_path='mask.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.mp4'subprocess.call('ffmpeg -i ' + file_name + ' -i ' + mp3_file + ' -strict -2 -f mp4 ' + outfile_name, shell=False)

完整代码

import cv2 
import face_recognition  # 人脸识别库  99.7%    cmake  dlib  face_recognition
import subprocessdef video2mp3(file_name):outfile_name = file_name.split('.')[0] + '.mp3'cmd = 'ffmpeg -i ' + file_name + ' -f mp3 ' + outfile_nameprint(cmd)subprocess.call(cmd, shell=False)def mask_video(input_video, output_video, mask_path='mask.jpg'):# 读取图片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:breakdef video_add_mp3(file_name, mp3_file):outfile_name = file_name.split('.')[0] + '-f.mp4'subprocess.call('ffmpeg -i ' + file_name + ' -i ' + mp3_file + ' -strict -2 -f mp4 ' + outfile_name, shell=False)if __name__ == '__main__':# 1.video2mp3('cut.mp4')# 2.mask_video(input_video='cut.mp4',output_video='output.mp4')# 3.video_add_mp3(file_name='output.mp4',mp3_file='cut.mp3')

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。

三、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

五、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。


这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费


http://chatgpt.dhexx.cn/article/MDpv9dQJ.shtml

相关文章

Python——超级鹰打码平台实现selenium对b站的自动化登陆

目录 一 、Chrome(谷歌)驱动器的下载 (一)驱动器版本选择 (二)下载Chrome驱动器 二、需要安装的库 (一)安装命令 (二)指定selenium版本原因 三、实现步…

selenium 自动化测试

Selenium 是一个用于Web应用程序测试的工具,支持多平台、多浏览器、多语言去实现自动化测试。目前在Web自动化领域应用越来越广泛。 selenium 介绍 Selenium的特点如下: 开源、免费多浏览器支持:Firefox、Chrome、IE、Opera、Edge多平台支…

深度学习中的自动编码器:TensorFlow示例

什么是自动编码器? 自动编码器是重建输入的绝佳工具。简单来说,机器就是一个图像,可以生成一个密切相关的图片。这种神经网络中的输入是未标记的,这意味着网络能够在没有监督的情况下进行学习。更准确地说,输入由网络编码,仅关注最关键的特征。这是自动编码器因降维而流行…

博客论坛自动采集器 - 蓝天采集器源码

介绍: 博客论坛自动采集器 做一个自动采集文章的网站,在你网站根目录创建一个目录随便我这边是caiji,然后把采集器的源码上传到caiji里面去。 安装:你的域名/caiji访问配置好数据库什么的安装就行。数据前缀不要和原来博客的相同。 安装完成…

Pytorch基础-07-自动编码器

自动编码器(AutoEncoder)是一种可以进行无监督学习的神经网络模型。一般而言,一个完整的自动编码器主要由两部分组成,分别是用于核心特征提取的编码部分和可以实现数据重构的解码部分。 1 自动编码器入门 在自动编码器中负责编码…

python手工打码_python云打码

广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 为什么需要了解打码平台的使用现在很多网站都会使用验证码来进行反爬,所以为了能够更好的获取…

python你实现视频自动打码,了解妨碍你观看精彩的马赛克是怎么精准形成的

前言 嗨喽!大家好呀,这里是魔王呐~ 我们在观看视频的时候,总有一些精准得马赛克挡住我们想看得地方,严重影响我们的观影体验!! 那么这些马赛克是如何精确的加上去的呢? 本次我们就来用Python…

易语言php验证码识别,易语言自动打码验证码服务端带案例

易语言通用验证码识别服务端,用来做接口还是可以的! 将127.0.0.1改成自己的服务器IP,或者域名 php案例: $rel = file_get_contents(http://www.zhuangjiba.com/d/file/help/2018/08/cfdefaddb3f47d78f8c66a7de28720aa.png); $code = _upload($rel); echo 验证码:.$code; f…

自动打码神器是什么

自动打码神器是什么 提到自动打码神器,可能很多网友会想到答题吧自动打码平台、远程答题器等,除了这一些软件之外,还有不少我们都不知道的软件正在等待大家的发掘。今天,小编就给大家先介绍一款专门批量识别验证码的平台——答题吧…

如何用 ISO 镜像制作 U 盘安装盘(通用方法、无需 WinPE)

文章目录 ★扫盲若干【基本概念】★啥是【通用】制作方法?★为啥选择这几款工具?★rufus 的玩法(Windows 平台)★UNetbootin 的玩法(跨平台)★dd 的玩法(跨平台)★优缺点对比★读者…

利用UltraISO刻录光盘启动盘

1 介绍 虽说现在越来越倾向于使用U盘作为启动盘,但本文还是要讲一讲怎样使用UltraISO制作光盘启动盘—作为系统安装的一种方法。我不知道未来光盘会不会消失,但本文确实能起到保护历史文化遗产的作用。但我希望不要消失,就好像大家都在说纸质…

如何在Mac上。ISO映像文件刻录到DVD

ISO是普通的CD或DVD光盘映像格式基于ISO-9660标准。从原始光盘ISO映像文件包含一个精确复制的数据。它包括光盘上的文件系统的信息,如目录结构,文件属性和引导代码,以及保存的数据。如果你想知道如何创建。ISO映像,并在Mac上玩ISO…

如何使用UltraISO将光盘中的内容提取为ISO镜像

转载地址:https://newsupport.lenovo.com.cn/commonProblemsDetail.html?noteid148183 知识点分析:将光盘中的内容转换为ISO镜像以便保存到电脑中的方法。 操作步骤: 1、鼠标右击桌面上的UltraISO快捷方式图标,选择“以管理员身份运行”; …

如何刻录光盘

如何刻录光盘 1 、将光盘放入光驱,选择“用于CD/DVD播放机” ,该模式下,刻录在光盘的文件无法进行编辑和删除 2 、将需要刻录的文件拷贝至光盘内,则会在“准备好写入光盘中的文件”下显示拷贝进去的文件,此时文件还没…

如何刻录光盘文件

常识补充刻录机简介光盘刻录机是一种数据写入设备,利用激光将数据写到空光盘上从而实现数据的储存。其写入过程可以看做普通光驱读取光盘的逆过程。基本原理刻入数据时,利用高功率的激光束反射到盘片,使盘片上发生变化,模拟出二进…

balenaEtcher v1.18.1 开源跨平台镜像文件快速刻录工具

balenaEtcher 是一款开源免费的跨平台镜像文件快速刻录工具,使用体验感觉比软碟通UltraISO好用多了,推荐使用。它可以帮助用户快速将 ISO 文件、IMG 文件或者其他格式的镜像文件刻录到 USB 驱动器、SD 卡或者其他可烧录介质上。它支持 Windows、macOS 和…

使用Linux建立镜像文件与刻录光盘(mkisofs,cdrecord,wodim,isoinfo,rsync)

一、镜像文件(.iso)与光盘(CD/DVD)的关系 镜像文件用于存储文件与数据光盘是一种存储设备,需要将镜像文件进行刻录,将数据刻录到光盘光盘刻录的步骤: 第一步:使用mkisofs命令将数据创建成为一个镜像文件(iso)第二步:使…

使用最新版UltraISO将ISO镜像刻录到U盘

1. 使用最新版UltraISO将ISO镜像刻录到U盘 一定要是最新版,试用版都可以,按下图操作: 2. U盘启动电脑进入安装界面 正常情况下你应该会看到下面的这个界面: 选择第一项,然后按TAB键,然后会看到下面这个&a…

刻录U盘镜像

Windows下刻录 刻录windows镜像的话,可以用UltraISO软碟通https://cn.ultraiso.net/ 可以无限试用 (1) 打开一个镜像文件XXX.ios (2) menu->启动->写入硬盘映像 (3)会自动识别U盘&#x…

如何利用UltraISO将系统镜像刻录到U盘上

【阅读文章申明】 作者只是想把自己实践中的经验分享给大家,如果文章里面有在大神面前显的很低级的知识点。那么大神你可以不看,请不要发一些“浪费流量”“辣鸡”之类嘲讽的话,这也不是交流的一种方式。每一篇文章都是作者自己。截图&#x…