别眨眼!用Python制作漂亮小姐姐的跳舞视频!

实战小项目 | Python制作词云跳舞,刘畊宏男孩女孩看过来~ 当Python程序员成为刘畊宏男孩\女孩,词云跳舞就出来了~ 阅读详情

哈喽~大家好,我是恰恰,又到了Python有趣的学习时间啦!我发现自从各种短视频平台出来以后,基本上大家空闲是时间都在刷抖音看视频,所以恰恰又开始琢磨,能用Python做些与视频相关的什么事呢?所以就马上行动起来啦~

视频来源:

【紫颜】见过仙女蹦迪吗 【千盏】

一、核心功能设计

总体来说,我们需要分为以下几步完成:

  1. 图片

    从B站上把小姐姐的视频下载下来

    对视频进行截取GIF,把截取的GIF进行ASCII字符转换

    把转换的字符gif根据每一帧的顺序重命名排序

    将排序后的帧gif转换为图片

    将字符图片合并成视频

    视频添加背景音乐

    图片

二、实现步骤

1. 下载视频

首先我们需要准备工作,安装you-get用来下载视频。

pip install you-get

图片

安装完成后,通过you-get将视频下载到本地。

仙女姐姐蹦迪视频链接:

https://www.bilibili.com/video/BV124411Q7iV

you-get -o 本地保存路径 视频链接 

图片

这样我们就把视频成功下载到本地了。
图片

2. 截取GIF并转换成ASCII字符

接下来我们要将下载的视频进行GIF截取,方法也比较多,用python也可以实现。

因为后面需要把GIF转成ASCII字符,截取的GIF时长尽量不能太长,所以这里就介绍通过迅雷播放器自带的gif截取工具,

每次截取20s。
图片

将每段截取出来之后, 可以按照顺序1 2 3将gif命名。

图片


图片

使用ASCII Animator将截取的GIF每一帧转换成ASCII。我们可以通过设置每100个像素宽度的字符数修改转换的字符密集程度。输出类型可以选择动画ASCII(.gif)
图片

我们可以在目录文件下找到temp文件,里面就是存储的每个gif中每一帧转换的ASCII的gif。下面我们就是需要处理这些ASCII的gif,

可以将文件夹拷贝到python项目下面。

图片

3. GIF重命名

老规矩,最开始我们把后面要用到的库全部导入。

import os
import re
import shutil
import cv2
from PIL import Image
import moviepy.editor as mpy

所有转换成功的ASCII的gif已经拿到了,为了后面我们将图片合并成视频,接下来我们就要把这些gif进行排序。

我们先从temp文件夹中读取,筛选出所有后缀名是 .gif 的,然后根据命名规则,将这些gif重命名,方便后面排序

def rename_gif():
    file_list = os.listdir("./temp")  # 读取当前文件夹所有文件
    # print(file_list)
    print("检测到文件夹下图片:")
    n = len(file_list)
    num_list = []
    num1 = num2 = 0
    for i in range(n):
        s = str(file_list[i])
        if s[-4:] == ".gif":  # 检查后缀
            res = re.findall(r"\d+", s)
            if res[0] == '1':
                num1 += 1
            if res[0] == '2':
                num2 += 1
            src = os.path.join(os.path.abspath('./temp/'), s)  # 原先的图片名字
            dst = os.path.join(os.path.abspath('./temp/'), res[0] + '-' + res[1]+'.gif')  # 根据自己的需要重新命名
            os.rename(src, dst)  # 重命名,覆盖原先的名字
    num_list.append(num1)
    num_list.append(num2)
    file_list = os.listdir("./temp")  # 读取当前文件夹所有文件
    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('./temp/'), s)  # 原先的图片名字
            a = int(res[0])-1
            index = a*num_list[a-1]
            dst = os.path.join(os.path.abspath('./temp/'), str(index + int(res[1])) + '.gif')  # 根据自己的需要重新命名
            os.rename(src, dst)  # 重命名,覆盖原先的名字

gif重命名之后,所有的gif都已经按照每一帧的顺序排好了。后面我们合成视频的时候,只要根据图片的名称来进行合并添加就可以了。


图片

4. gif转换为图片jpg

接下来,我们要把按帧顺序排列的gif转换成jpg图片。

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格式

图片

5. 合成代码舞视频

图片合成视频,这里我们使用python-openvc模块实现,同样如果之前没有安装的小伙伴,需要先安装下。

pip install opencv-python

我们可以将图片文件夹的路径传入参数,还可以通过fps设置每秒多少张图片。

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()

图片

6. 添加背景音乐

代码舞已经完成了,最后一步就是把视频中的背景音乐添加到代码舞中。我们使用的是moviepy 模块,截取原视频的背景音乐并保存,

最后再将代码舞视频中插入音频保存。

def add_music():
    # 读取代码视频
    my_clip = mpy.VideoFileClip('asc.mp4')
    # 截取背景音乐
    audio_background = mpy.AudioFileClip('dance.mp4').subclip(0, 60)
    audio_background.write_audiofile('bk.mp3')
    # 视频中插入音频
    final_clip = my_clip.set_audio(audio_background)
    # 保存最终视频
    final_clip.write_videofile('char_video.mp4')

完成到这一步由代码组成的视频就完成啦~关于学习Python其实是一件有趣的事,所以大家一定要多去研究,想要达成什么效果做什么事都可以想想,Python是否可以完成呢?久而久之的钻研就孰能生巧啦!Python并没有想象中的难和枯燥,Python真的就是除了不能生孩子什么都能做哈哈,所以如此有用的一项技能大家赶紧学起来哦~

后续也会更新其他Python相关知识,喜欢的点个关注,评论点一下赞哦~谢谢大家啦!

趣味python之print做会动的皮卡丘 试试用print来画出皮卡丘并且让他动起来也作为小白学习python的一个入门小项目吧 先看看结果图: 首先,我们要有一个皮卡丘~ print(' へ     /|') print('  /\7    ∠_/') print('  / │   / /') print(' │ Z _,< /   /`ヽ') print(' │     ヽ   /  〉') print('  Y     ` ... 阅读详情

相关推荐

微软的跳舞小人,在桌面上随着音乐起舞

微软的跳舞小人,在桌面上随着音乐起舞。 安装后播放MUSIC 就有个美女跳舞,音乐停止美女自动隐藏! 挺好玩的. 微软出品

宅男福利!我用Python做了一个B站跳舞的小姐姐,满屏的美腿!

宅男福利!我用Python做了一个B站跳舞的小姐姐,满屏的美腿!

python03011的博客 3834

python制作抖音字符画视频

python制作抖音很火的字符画视频。一共有两个脚本,main.py负责将视频生成字符画图片序列,make_vedio.py负责将生成的字符画图片序列生成为视频。代码中的文件和目录名称请自行修改,不建议跑尺寸很大的视频,速度会比较慢,需要安装opencv-python和pillow两个包。

ASCII 魔法:用字符拼出跳动的心形(支持调整频率)

我们先定义一个函数来生成不同大小的心形图案。这里,我们通过数学公式来计算每个字符的位置,从而生成相应的 ASCII 图案。heart = []line = ""else:通过这个项目,我们不仅学习了如何使用 ASCII 字符来构建图案,还掌握了如何使用 Python 实现动画效果以及控制动画的频率。希望这个有趣的小项目能激发你对编程的更多兴趣,让你在编程的道路上不断探索和创新。你可以将上述代码保存为一个 Python 文件(例如),然后在命令行中运行,按照提示输入跳动的频率,就能看到跳动的心形啦!

2301_76277481的博客 752

Python-用算法生成舞蹈动画

用算法生成舞蹈动画

python制作抖音代码舞

主要为大家详细介绍了python制作抖音代码舞的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

python制作代码舞视频来啦~

上一篇文章我们介绍了如何制作字符画视频,今天就来给大家介绍一下代码舞的视频制作首先是原版接着是黑白版的最后是彩色版的是不是看着很nice呢,哈哈哈哈第一步首先我们要准备一个视频,然后我们需要把视频转化为gif图片视频转化为gif的方式途径有很多,我这里是在这个网站里面转化的第二步在这里我们需要借助到一个工具 第一个框框是图片的位置,第二个框框是文件输出的位置,一般不需要改,上传图片后,我们点击Settings选项 Output type有三个选项,第一个是生成一个html文件,第二个是生成黑白的代码gif

m0_64336780的博客 6037

Linux中断子系统分析之(四):驱动程序申请中断

中断子系统中有一个重要的设计机制,那就是Top-half和Bottom-half,将紧急的工作放置在Top-half中来处理,而将耗时的工作放置在Bottom-half中来处理。 如果中断不分上下半部处理,那么意味着只有等上一个中断完成处理后才会打开中断,下一个中断才能得到响应。当某个中断处理处理时间较长时,很有可能就会造成其他中断丢失而无法响应,影响系统性能。 中断分成上下半部处理可以提高中断的响应能力,在上半部处理完成后便将中断打开,这样就可以响应其他中断了,等到中断退出的时候再进行下半部的处理。为了进

m0_46525308的博客 1225

用 Python 制作“会跳舞”的动态图表

在 Python 中可以使用matplotlib和plotly。

tmapi 395

项目实训(四)——SAM模型的学习与部署

这里的show_mask就是我们用mask的prompt进行分割,show_points就是我们用points进行分割,show_box就是通过box进行分割,这是SAM的三种prompt的方式。总的来说,Meta AI 的 Segment Anything 模型为我们提供了一种全新的物体识别和分割方式,其强大的泛化能力和广泛的应用前景将极大地推动计算机视觉领域的发展。这里有vit_h、vit_b、vit_l三种权重模型,这里可以根据自己的需要下载相应的权重模型。我们是下载的vit_h权重模型。

yyyyyyyx_的博客 1421

【数电课程设计】---出租车计价器

文章目录1、任务要求2、方案3、收获 1、任务要求 2、方案 3、收获

LZY 1万+

利用Python做一个漂亮女生词云跳舞视频

利用Python做一个漂亮小姐姐词云跳舞视频。实现思路:1. 下载视频 2. 获取弹幕内容 3. 从视频中提取图片 4. 利用百度AI进行人像分割 5. 小姐姐跳舞词云生成 6. 合成跳舞视频 7. 视频插入音频 B站上的漂亮的小姐姐真的好多好多,利用 you-get 大法下载了一个 B 站上跳舞的小姐姐视频,利用视频中的弹幕来制作一个漂亮小姐姐词云跳舞视频,一起来看看吧。

叶庭云 成为自己的光 1万+

使用Qt Creator自带的Qt Designer构造UI界面流程总结

在本文中,我们将总结使用Qt Creator自带的Qt Designer构造UI界面的流程。在对话框中,您可以选择一个控件的信号,然后将其连接到另一个控件的槽。例如,您可以将按钮的点击信号连接到一个槽函数,以响应按钮的点击事件。右键单击窗口设计器中的空白区域,选择适当的布局管理器,如水平布局、垂直布局或网格布局。在Qt Designer中,您可以使用各种预定义的UI控件来设计应用程序的界面。现在,您可以在应用程序的源代码中使用生成的UI界面。在您的源文件中,包含相应的头文件,然后创建一个UI界面的实例。

cl6789的博客 1392

利用Python做一个小姐姐词云跳舞视频

点击上方蓝色小字,关注“涛哥聊Python”重磅干货,第一时间送达来源:修炼Python每周三个人直播,想和我聊天的欢迎来约‍‍‍‍‍‍‍朝朝暮暮里,祝愿我们每个人都能沉淀过往,迎来新光,...

涛哥聊Python 795

测风数据垂直外推(原理及Windowgrapher操作示范)

垂直外推

weixin_46713695的博客 894

B站自动答题协议分析

使用Python写了一个自动答题机器人!基于接口协议实现且包含点选验证码识别

吴秋霖的博客 2651

python源码案例 制作词云视频,通过词云图来看小姐姐跳舞

python源码案例 制作词云视频,通过词云图来看小姐姐跳舞

m0_37302966的博客 813

2.4 提示词优化

我们在使用大模型的时候,同一任务使用不同表述的提示词,可能得到差异巨大的结果,因为模型的性能高度依赖输入提示词的质量。我们可以通过提示词优化来更高效地获取理想输出。

从0到1,突破自己 1010

程序员幸福时刻,用Python做了一个B站跳舞的小姐姐,满屏的美腿!

周末在家,天气好冷好冷啊,我们这边都下雪了!宅在家里没有啥事情,于是炖了只老母鸡,补补身子。 一边炖鸡汤,一边用Python码些好玩的脚本。辛苦了一个周末,菜鸟哥写了一个好玩的小脚本,赶紧跟大家分享一下。 B站上的漂亮的小姐姐真的好多好多,今天我们来玩一个来抓取B站上跳舞的小姐姐视频,并利用视频中大家的弹幕来绘制一个跳动弹幕的舞蹈视频,非常炫酷~~一起来看看吧。 01.弹幕抓取 首先,我们选定一个弹幕比较多的小姐姐舞蹈视频,并下载该视频,同时,利用以下程序来抓取小姐姐视频中的弹幕信息。 上述程序中,首先.

weixin_46737755的博客 1779

YOLOv8实战教程:从模型训练到改进的全流程指南

回顾这段YOLOv8的实战历程,从最初的模型训练到后来的各种改进尝试,我深刻体会到目标检测技术的魅力与挑战。YOLOv8作为一款优秀的框架,不仅易用性强,而且具备很强的可扩展性,让我能在其基础上不断创新。未来,我计划在以下几个方向继续探索:一是将YOLOv8与多模态技术结合,尝试实现图像与文本的联合目标检测;二是深入研究自监督学习在YOLOv8中的应用,减少对标注数据的依赖;三是探索YOLOv8在更广泛场景的部署,如机器人、自动驾驶等。

LXY_LOVE36的博客 279

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Python之抖音快手代码舞--字符舞

先上效果,视频敬上: 字符舞: 代码舞 源代码: video_2_code_video.py import argparse import os import cv2 import subprocess from cv2 import VideoWriter_fourcc from PIL import Image, ImageFont, ImageDraw # 命令行输入参数处理 #

一个超会写Bug的程序猿的博客 5619

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

抖音python上的代码_抖音代码舞Python3实现

importargparseimportosimportcv2importsubprocessfrom cv2 importVideoWriter_fourccfrom PIL importImage, ImageFont, ImageDraw#命令行输入参数处理#aparser = argparse.ArgumentParser()#aparser.add_argument('file')#ap...

weixin_39602967的博客 541

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

抖音python上的代码_抖音代码舞「图文推荐」,python实例代码

抖音小视频,1个致力于协助大家表述自身,纪录幸福生活的小视频分享app。运用人工智能应用为客户造就丰富多彩多种多样的玩法,让用户在日常生活中轻轻松松迅速产出率高品质小视频。主要代码如下,要修改的内容。如果你想要生成各种不同的效果,你可以根据像素的值个性化设计。我沉迷于抖音,我无法自拔。我经常连续几个小时在这位漂亮的小姐身上。人工寻找时间和精力,为了直接有效地找到一位漂亮的女士,我用Python +...

weixin_39904116的博客 1226

AI全栈实战 | 3.9-01 爬虫入门:requests 加 BeautifulSoup 三分钟跑通,但 90% 的人栽在这 4 个“礼貌“问题上

⚠️:本文内容仅用于。请遵守目标站点的服务条款与相关法律法规,不得对目标服务造成负担,不得采集、传播个人隐私数据。技术是中性的,边界在你手里。爬虫的入门技术(requests 发请求 + BeautifulSoup 解析)三分钟就能学会。真正区分"会用爬虫"和"会做爬虫的人"的,是这篇我们跑通"请求→解析→存储"的最小闭环,然后重点把"合规与礼貌"这根弦给你绷上。

源码获取 | 运行部署 | 定制二开修改,如果回复不及时请耐心等待,请见谅。 400
上一篇: 太有趣了!五个处理图像的场景都是Python完成的
下一篇: 没有什么不可能!Python 30秒就能学会的漂亮短代码,你也可以!
Python_恰恰好
博客等级 码龄5年 378粉丝 28原创
评论 9
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值