使用Python制作内马尔的胜利之舞代码版

news2024/11/13 15:07:42

不知道大家最近有没有被球星内马尔所吸引,反正我是对他的胜利之舞上瘾了。今天,我以程序猿的视角将他的胜利之舞做成代码版的视频。话不多说,先看看最终效果图:

 

哈哈哈哈,是不是看着还不错的样子。

之前我做过类似的教程:python制作代码舞视频来啦~还做过字符画视频的教程:python制作字符画视频来啦~

下面开始上教程!

1.找视频

我这里找的视频是在某音上下载的,大家可在其他平台下载即可。

2.将视频转为gif图片形式

视频转化为gif的方式途径有很多,我这里是在这个网站里面转化的

3.借助工具将gif图片转化为代码图片

在这里我们需要借助到一个工具,叫ASCII Animator,可在百度自行下载

第一个框框是图片的位置,第二个框框是文件输出的位置,一般不需要改,上传图片后,我们点击Settings选项

Output type有三个选项,第一个是生成一个html文件,第二个是生成黑白的代码gif图片,第三个是生成彩色的gif图片,同时在它的输出路径下有一个temp文件。里面存放的就是gif图片每一帧的图片 

4.使用python将temp文件夹里面的每一帧图片合成mp4视频 

import os
import re
import cv2
from PIL import Image
 
 
def rename_gif(gif_path): # temp_path 是你存放gif和bmp文件的路径文件夹,也就是temp文件夹的路径
    file_list = os.listdir(gif_path)  # 读取当前文件夹所有文件
    n = len(file_list)
    for i in range(n):
        s = str(file_list[i])
        if s[-4:] == ".gif":  # 检查后缀
            res = re.findall(r"\d+", s)  # 获取它的顺序值
            src = os.path.join(os.path.abspath(gif_path), s)  # 原先的图片名字
            dst = os.path.join(os.path.abspath(gif_path), res[0] +'.gif')  # 根据自己的需要重新命名
            os.rename(src, dst)  # 重命名,覆盖原先的名字
        else:
            os.remove(gif_path + s) # 删除.bmp文件
 
 
def iter_frames(im):
    try:
        i= 0
        while 1:
            im.seek(i)
            imframe = im.copy()
            if i == 0:
                palette = imframe.getpalette()
            else:
                imframe.putpalette(palette)
            yield imframe
            i += 1
    except EOFError:
        pass
 
def gif2img(gif_path):
    gifs = os.listdir(gif_path)
    gifs.sort(key=lambda x: int(x[:-4]))  # 以名称字符串的数字从小到大排序
    for gif in gifs:
        im = Image.open(gif_path+gif)  # 打开gif格式的图片
        im = im.convert('RGB')
        if not os.path.exists('./img'):
            os.makedirs('./img')
        for i, frame in enumerate(iter_frames(im)):
            frame.save('./img/' + gif[0:-4] + '.jpg', **frame.info)  # 保存成jpg格式
 
 
def charts2video(img_path, video_path):
    """将给定目录下的图片转成视频
    Args:
        img_path: 图片路径
        video_path: 输出视频的路径和名称
    Returns: 图片转成的视频
    """
    images = os.listdir(img_path)
    images.sort(key=lambda x: int(x[:-4]))  # 以名称字符串的数字从小到大排序  
    fps = 12  # 帧数
    fourcc = cv2.VideoWriter_fourcc('M', 'P', '4', 'V')
    im = Image.open(img_path + images[0])
    video_writer = cv2.VideoWriter(video_path, fourcc, fps, im.size)
    for img_i in images:
        frame = cv2.imread(img_path + img_i)
        print('开始将 ' + img_i + ' 加入视频\n')
        video_writer.write(frame)  # 注意:图片尺寸必须和视频尺寸一样,不然不会被加入视频中!!!
    video_writer.release()
 
if __name__ == '__main__':
    gif_path = './temp/' # gif文件的路径
    video_path = '合成后的视频.mp4' # 要保存的视频路径
    # 修改.gif文件的名字
    rename_gif(gif_path)
    # 将.gif文件转换为.jpg文件
    gif2img(gif_path)
    # 将.jpg文件转换为.mp4文件
    charts2video('./img/',video_path)

 注意:我这里的代码路径是py文件和temp文件在同一目录下运行

运行之后就得到合成后的mp4代码舞视频啦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/68167.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小程序游戏 vs h5游戏,技术优势分别有哪些

从“跳一跳”到“羊了个羊”微信小游戏上线4年时间,除了涌现出不少火爆全网的小游戏之外,也有类似于“动物餐厅”、“口袋奇兵”等游戏得以在此孵化繁荣,凭借着微信强大的社交属性小游戏成为游戏厂商在桌面端、App 端、H5 端之外争夺的另一个…

微软宣布 S2C2F 已被 OpenSSF 采用

开源供应链安全对大多数 IT 领导者来说是个日益严峻的挑战,围绕确保开发人员在构建软件时如何使用和管理开源软件 (OSS) 依赖项的稳健策略至关重要。Microsoft 发布安全供应链消费框架 (S2C2F) 是一个以消费为中心的框架,它使用基于威胁的风险降低方法来…

linux下安装部署es-head插件

es通过程序代码调用es 各种api接口。 es-head查看与显示es状态信息,数据量,具体数据。 1、elasticsearch-head介绍 官方地址: https://github.com/mobz/elasticsearch-head elasticsearch-head 是一款用来管理Elasticsearch集群的第三方插件工具。 e…

用二元泊松模型预测2022年世界杯淘汰赛结果

用二元泊松模型预测2022年世界杯淘汰赛结果 网上有很多文章用双泊松(Double Poisson)模型来预测世界杯比赛结果。但是双泊松模型有一个严重的缺陷,那就是它假设比赛中两队的比分是条件独立的。而我们都知道,在对抗性比赛中&…

国产API管理神器Eolink也太强了吧

一、研发痛点 什么是API研发管理 API研发管理是包含了API开发管理、开发团队协作、自动化测试、网关以及监控等等API管理全生命周期的一系列管理过程。可以帮助公司实现开发运维一体化,提升开发速度,达到降本增效的目标。 前端痛点 针对前端开发在使…

Metabase学习教程:权限-2

使用集合权限 设置具有权限的集合,以帮助用户组织和共享与其相关的工作。 集合保持问题,仪表板,和模型有条理,容易找到。将集合视为存储我们工作的文件夹是很有帮助的。集合权限授予一群人访问: 查看或编辑保存在集合中的问题、…

激活企业数字化采购价值,智慧采购管理系统助力半导体行业提升采购协同效率

如今,随着国内经济不断发展以及国家对半导体行业的政策扶持,我国半导体行业发展迅速,半导体技术含量与日俱增的同时,也对我国半导体企业的管理效能与管理工具提出了更高的要求。在海外对国内半导体产业发展日益严格的当下&#xf…

Netty篇之如何优雅的关服

强制关服的危害 linux中关服如果我们使用 kill -9 pid号或者在windows中使用 taskkill /f /pid pid号来关服的话,相当于是突然断电的方式,会导致如下几种情况。 缓存中的数据丢失正在进行文件的写操作,没有更新完成,突然退出会…

技术分享 | Redis 集群架构解析

作者:贲绍华 爱可生研发中心工程师,负责项目的需求与维护工作。其他身份:柯基铲屎官。 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。 一、集群架构的一…

决策树算法中处理噪音点

目录 如何解决?——采用剪枝的方法。 预剪枝 后剪枝 如果训练集中存在噪音点,模型在学习的过程总会将噪音与标签的关系也学习进去,这样就会造成模型的过拟合化,也就是模型在训练集的分类效果很好,在未知数据上处理效…

python快速实现2048小游戏

《2048》是一款比较流行的数字游戏,最早于2014年3月20日发行。原版2048首先在GitHub上发布,原作者是Gabriele Cirulli,后被移植到各个平台。这款游戏是基于《1024》和《小3传奇》的玩法开发而成的新型数字游戏。 操作指南: 每次…

景区票务系统毕业设计,景区售票系统设计与实现,旅游售票系统毕业设计源码分析

项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于java的景区景点预约购票系统,整体使用javaMySql的B/S架构,技术上采用了springboot框架;通过后台添加景区资讯、景点介绍,管理用户订单;用户通过…

Vue怎么通过JSX动态渲染组件

一、明确需求 有一组数组结构如下: const arr [ { tag: van-field }, // 输入框{ tag: van-cell }, // 弹出层{ tag: van-stepper } // 步进器 ] 想通过循环arr,拿到tag渲染对应的组件。 下面我们分析如何写才是最优。 二、进行分析 2.1 v-if走天…

JavaScript期末大作业:基于HTML+CSS+JavaScript黑色的bootstrap响应式企业博客介绍模板

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

JTable详细介绍

目录 一、基本表格 二、修改列宽并显示列的名称 三、使用AbstractTableModel抽象类存储数据 一、基本表格 显示一个Table需要两组数据 1. 一维数组: String[]columnNames 表示表格的标题 2. 二维数组: String[][] heros 表格中的内容 默认情况下&…

使用openssl工具生成CSR文件

使用OpenSSL工具生成CSR文件 登录服务器。 安装OpenSSL工具。 执行以下命令,生成CSR文件。 openssl req -new -nodes -sha256 -newkey rsa:2048 -keyout [$Key_File] -out [$OpenSSL_CSR] 说明 -new:指定生成一个新的CSR文件。 -nodes:指定…

WindowsNT下的OpenGL

三、WindowsNT下的OpenGL 3.1、Windows NT下的OpenGL函数   如前面的章节所述,Windows NT下的OpenGL同样包含100多个库函数,这些函数都按一定的格式来命名,即每个函数都以gl开头。Windows NT下的OpenGL除了具有基本的OpenGL函数外&#xf…

威马汽车欲曲线上市:沈晖已提前持股并任职,销量垫底、员工降薪

12月5日,港交所上市公司Apollo出行(HK:00860)发布公告称,该公司拟收购一家从事智能电动车的公司,目标公司的业务涵盖一系列配备先进技术的智能电动车,目标客户为中国年轻且精通技术的用户(特别是…

小迪-day14(注入类型之提交注入)

1、参数提交注入 1.1 明确参数类型 数字,字符,搜索,JSON等1.2 明确提交方式 GET, POST,COOKIE,REQUEST,HTTP头等可能有些网站是以Request的方式接受参数,所以GET和POST都行 注入的地方可能在User-Agent、cookie上&a…

辽宁熤星传媒文化:抖音原创特效怎么做?

现在很多小伙伴在家都基本上会去找一些副业来做,或者是一些赚钱的方法,要知道,抖音其实还是有很多赚钱的机遇在里面的,那么大家拍抖音都是需要去使用特效的,那么抖音特效应该怎么做呢?跟着辽宁熤星传媒小编…