导
语
又到了愉快地周末,应某好友的要求,本周来补一期视频转字符动画相关的内容,核心主题是将蔡徐坤打球的视频转成字符动画。我也不知道为什么,真的不知道,真的真的不知道为什么。嗯,重要的话说三遍。说干就干,让我们愉快地开始吧~
相关文件
关注微信公众号“Charles的皮卡丘”,公众号内回复‘视频转字符动画’获取。
开发工具
Python版本:3.6.4
相关模块:
pillow模块;
pyprind模块;
numpy模块;
argparse模块;
opencv-python模块;
以及一些Python自带的模块。
其他:
ffmpeg。
环境搭建
安装Python并添加到环境变量,pip安装需要的相关模块即可。
先
睹
为
快
运行方式:
python demo.py -t 待处理视频.mp4
效果如下:
原理简介
很久以前发过一篇类似的文章:
作为一位认真负责的公众号博主,当然不可能把过去的内容拿来炒冷饭再发一遍呀~相对于前一篇文章的代码,本文代码的亮点(不信?看看转换为字符动画的蔡徐坤打球视频呀~):
这次我们的字符动画效果更佳!!!
这次我们的字符动画是彩色的!!!
这次我们的字符动画保留了原视频的声效!!!
这次我们的字符动画可以直接输出保存为.mp4文件!!!
那么我是如何实现的呢?原理其实依旧很简单,总代码量不足百行。首先是视频转字符动画,我们提取视频的所有帧,将每帧图片resize到固定尺寸,使得resize后的图片每个像素点对应原图的一个像素块,例如下图所示:
然后新建一个和原图同样大小的空白图,将resize后的图片每个像素点的信息用一个特定的字符表示在空白图对应的像素块上(每个点的字符由该点的像素值决定)。处理完所有帧后,将所有帧合成为新的视频即可。具体而言,代码实现如下图所示:
然后利用ffmpeg提取原视频的声效,源代码如下图所示:
最后利用ffmpeg将生成的字符动画和原视频音频信息合并,源代码如下图所示:
That's all,完整源代码详见相关文件。
更多
代码截至2019-04-13测试无误。
公众号微信交流群4:
二维码过期的话,可以在公众号内回复"交流群"获取最新的群聊二维码。
微信公众号:
Charles的皮卡丘
哈哈哈哈哈
长按二维码关注