如何把抖音小姐姐的视频转成代码动图?(附源码)

文/IT可达鸭

图/IT可达鸭、网络

前言

上一篇,我们分享了给图片转成代码图片的源码,这次分享一个视频转代码动图的一个源码,需要有图像和动图像的一些基本知识。

图片来自网络


环境配置

python版本: 3.6.0

代码编辑工具:pycharm

录屏软件、控制台(win+r, cmd)

项目所需要的环境安装包

<code>pip install opencv-python/<code>

第一步:导入相关的python包

<code># encoding:utf-8 import cv2 import os/<code>

cv2:是一个强大的图像、视频处理工具包。有兴趣做图像处理或视频处理,可以稍微研究一下openCV。

os: 这里使用它文件存储和清屏功能。

第二步:全局变量

<code>ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,"^`'. ") char_len = len(ascii_char) show_height = 40 show_width = 80/<code>

ascii_chat 是像素值转化的代码列表,show_height 和show_width 分别是最终转化动图的高和宽。 这里为了方便演示,就把它作为全局变量。如果是实际项目,就必须用配置文件或者从数据库中读取。

第三步:视频处理

<code>def frame_process(video_path): vc = cv2.VideoCapture(video_path) # 加载一个视频 if vc.isOpened(): # 判断是否正常打开 rval, frame = vc.read() else: rval = False frame_count = 0 outputList = [] # 初始化输出列表 while rval: # 循环读取视频帧 gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 使用opencv转化成灰度图 gray = cv2.resize(gray, (show_width, show_height)) # resize灰度图 text = "" for pixel_line in gray: for pixel in pixel_line: # 字符串拼接 text += ascii_char[int(pixel / 256 * char_len)] text += "\r\n" outputList.append(text) frame_count = frame_count + 1 if frame_count % 100 == 0: print("已处理" + str(frame_count) + "帧") rval, frame = vc.read() print("处理完毕") return outputList/<code>

视频是由一帧帧图片组成,有些视频每秒有24帧图片、有些12帧图片,帧的数量取决于视频的质量。这里处理步骤是:

1 加载视频

2 循环读取每一帧图片

3 对图片进行大小重置、灰度转化、字符转换

4 结果保存在列表中

5 返回列表结果


第四步:打印结果

<code>def output(outputList): for frame in outputList: os.system("cls") # 清屏 print(frame) print() print()/<code>

os.system("cls"): 表示把控制台所有信息清空。

模拟视频播放,一帧一帧地打印所有的图片。


第五步:主函数

<code>if __name__ == '__main__': # 在命令行中,运行效果更明显 video_path = '跳舞.mp4' frame_list = frame_process(video_path) output(frame_list) print("OK")/<code>

随意在抖音上下载一个小姐姐的跳舞视频,作为函数的参数。


输入输出

打开控制台(Win+R),输入cmd,并进入到代码所在目录。运行命令: python 视频转代码.py,再利用录屏软件录制屏幕,导出动图GIF。

结语

不知不觉,代码库又多了一块砖。虽然代码对于老程序员来说,这代码 so easy, so simple。但是,对于新手而言,这就是一个非常好的练手小项目。不仅仅代码量少,更重要的是容易上手。如果大家有疑问,欢迎下方评论。未来编程的路还很长,放下你手中的手机,跟我们一下写代码吧!

如果有疑问想获取源码,可以关注后,在后台私信我,回复:python代码视频。 我把源码发你。持续关注"IT可达鸭" ,每天分享有趣Python源码。如果觉得我的文章有意思,就顺手点个赞吧。最后,感谢大家的阅读,祝大家工作生活愉快!