Python实现视频自动打码功能

import cv2
import face_recognition  # 人脸识别库  99.7%    cmake  dlib  face_recognition
import subprocess

def video2mp3(file_name):

    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'):

    # 读取图片
    mask = cv2.imread(mask_path)
    # 读取视频
    cap = cv2.VideoCapture(input_video)
    # 视频  fps  width  height
    v_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] = mask
            out.write(frame)

        else:
            break

def 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')

Original: https://www.cnblogs.com/hahaa/p/16118203.html
Author: 轻松学Python
Title: Python实现视频自动打码功能

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/500056/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 利用资金曲线选择策略加减仓时机

    更多精彩内容, 欢迎关注公众号:数量技术宅,也可添加技术宅 个人微信号:sljsz01,与我交流。 每个策略都有其相适应的行情,如果某一段行情符合策略的逻辑,那么策略就会在这段行情…

    Python 2023年6月3日
    0102
  • 用Python做一个中秋抢购月饼的脚本

    ; 序言 每逢佳节倍思亲,想买个东西给家里,结果发现手速不够,网速不够快,没有时间下单等等各种原因导致最后想买的东西售罄了… 甚至跟你一起抢购的可能是脚本,太真实了! …

    Python 2023年6月9日
    0145
  • pytest-html测试报告

    1、安装类库: pytest-html 2、生成默认html报告:pytest –html=报告名称.html 3、执行指定文件生成测试报告:在指定运行脚本下方输入 i…

    Python 2023年9月10日
    0100
  • Pytest–生成测试报告

    一、Pytest-html插件生成测试报告 1.在pytest.ini配置文件 #即在当前目录下生成report.html测试报告文件 [pytest] addopts= –ht…

    Python 2023年9月13日
    089
  • Flask-sqlalchemy – 读MySQL案例

    初次学习 Flask 框架时,检索相关操作或者示例代码,网上90%的博客文章清一色的抄官方示例,并没有实际的帮助到我。所以在此记录下一些主要的操作与示例,也希望可以帮助到初学者。 …

    Python 2023年8月14日
    0135
  • Python数据分析之股票双均线策略制定

    Python数据分析之股票双均线策略制定 需求:双均线策略制定 库 tushare包 预处理数据 df = pd.read_csv(‘./maotai.csv’).drop(lab…

    Python 2023年8月8日
    068
  • matplotlib知识点总结

    1、什么是matplotlibmatplotlib是最流行的Python底层绘图库,主要做数据可视化图表,名字取于MATLAB,模仿MATLAB搭建。2、matplotlib基本要…

    Python 2023年9月6日
    084
  • Dataframe和ndarray相互转换

    读取文件数据时通常得到的是dataframe格式的,如通过pd.read_csv。有时需要将dataframe格式的数据转换成ndarray的数组形式。 ndarray: NumP…

    Python 2023年8月16日
    082
  • 编译pjsip源码

    操作系统 : Windows 10_x64 [版本 10.0.19042.685] pjsip版本 : 2.10 pjsip官网:https://www.pjsip.org/ 1….

    Python 2023年6月12日
    0137
  • python flask简单使用

    一个基于python的简单轻便的web应用框架。前端使用jinjia2模板引擎。 安装:pip install flask 调试运行:python -m 执行文件; 后台运行:no…

    Python 2023年8月12日
    084
  • 使用 supervisor 自动拉起 uWSGI 启动 Django项目

    前言 最近项目要上线了,然后有一些环境上的问题需要规整一下,需要使用到uWSGI来启动项目,然后在配置supervisor做到自动拉起uWSGI,这样uWSGI挂了也能自动起来了,…

    Python 2023年8月4日
    070
  • 【WEB攻防】【CVE-2019-14234】Django JSONField SQL注入 复现

    中华人民共和国网络安全法(出版物)_360百科中华人民共和国网络安全法,《中华人民共和国网络安全法》是为保障网络安全,维护网络空间主权和国家安全、社会公共利益,保护公民、法人和其他…

    Python 2023年8月4日
    0119
  • pytest基本应用(二)

    一.在测试过程中,经常需要测试是否如期抛出预期的异常,以确定异常处理模块生效。 在 pytest 中使用 pytest.raises()进行异常捕获 异常捕获 def test_z…

    Python 2023年9月14日
    0108
  • 利用SSIS进行SharePoint 列表数据的ETL

    该test列表数据有文件夹和项目,但实际只要抽取项目数据即可,比如11,22,fsd等,用VS 2015以上版本新建SSIS项目,并在数据流任务中添加Odata数据源获取test列…

    Python 2023年6月6日
    082
  • 可视化之用pandas绘制简单的图形

    文章目录 * – 0. 简介 – 1. pandas.DataFrame.plot()参数 – 2. 演示 – + 2.1 各种图 …

    Python 2023年8月7日
    0115
  • Unity制作 小球吃金币 游戏

    工程源文件下载地址-百度网盘 1. 新建一个项目 2. 新建一个平面对象 3. 新建一个材质球 为材质球设置颜色 5. 将材质球拖拽赋值给平面 6. 创建立方体对象,拉伸至平面宽度…

    Python 2023年9月30日
    068
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球