码神军训(四,五)——代码跳舞军体拳
Posted 秋名山码神
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了码神军训(四,五)——代码跳舞军体拳相关的知识,希望对你有一定的参考价值。
吹水
今天,码神依旧凉爽,军体拳,摸鱼一天,所以早上就在操场趴着,**不过,我学会了, **信不信?看到抖音小姐姐的舞蹈,用代码做出来,还挺好看,我也想试一下,不会,学莫,反正假酒已经醒了。
想思路
总不能一个一个做吧,这可是一个视频,一个一个做我做到明年都弄不完,大致思路如下:
- 视频变图片,专业术语:视频抽帧
- 图片变字符,专业术语:把抽帧得到的图片集转换为字符画集
- 字符变舞蹈,专业术语:循环打印,变成动画效果
代码实现
视频抽帧
将一段视频截取下来,使用GIF截取工具
转化字符
将gif转化为字符
用python导入库
import os
import re
import shutil
import cv2
from PIL import Image
import moviepy.editor as mpy
读取字符
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) # 重命名,覆盖原先的名字
循环输出
用到python中的一个库
pip install opencv-python
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()
最后的代码舞视频我已经上传到B站了,大家可以一起来欣赏下喔。
还有就是我已经学会军体拳了,不用一直摸鱼了
https://www.bilibili.com/video/BV1RP4y18741/
以上是关于码神军训(四,五)——代码跳舞军体拳的主要内容,如果未能解决你的问题,请参考以下文章