利用Python让你的命令行像蔡徐坤一样会打篮球
2019-04-07 本文已影响79人
9ba4bd5525b9
原理
既然要开始做东西,首要的问题就是想好要怎么做,大家都知道视频是由一系列图片一帧一帧组成的,因此视频转字符动画最基本的便是图片转字符画。
在这里简单的说一下图片转字符画的原理:首先将图片转为灰度图,每个像素都只有亮度信息(用 0~255 表示)。然后我们构建一个有限字符集合,其中的每一个字符都与一段亮度范围对应,我们便可以根据此对应关系以及像素的亮度信息把每一个像素用对应的字符表示,这样字符画就形成了。
计算一张图片的灰度图像的方法如下(来自百度百科):
![](https://img.haomeiwen.com/i13406307/4c97560971724426.png)
所以我们要做的就只是让字符画在命令行里面动起来就可以了。
准备
环境和工具:
vscode
Mac OS
python 3.7
这次实验使用到的核心的库是opencv-python,关于opencv上篇文章已经简单介绍过了,这里不多阐述了,只要知道这是一个和计算机视觉有关的库就可以了。
实验
实验开始前我们需要安装opencv-python的包:
pip install opencv-python
读取视频
![](https://img.haomeiwen.com/i13406307/be693c2783b0d199.png)
这里的VideoCapture是用来读取视频的,cv2.cvtColor(input_imageflag)用于转换颜色空间,其中flag就是转换类型。对于BGR↔Gray的转换,我们使用的flag就是cv2.COLOR_BGR2GRAY。对于BGR↔HSV的转换我们用的flag就是cv2.COLOR_BGR2HSV。
将帧转换成字符画
![](https://img.haomeiwen.com/i13406307/23df4f40e7995116.png)
这段代码其实就是将已经转变的灰度图的像素值映射到ascii_char上,然后输出到控制台。
控制输出
![](https://img.haomeiwen.com/i13406307/c64fcfa50f8285b6.png)
执行
最后在main函数中设置下要读取的文件名,再play一下就可以了
![](https://img.haomeiwen.com/i13406307/12ad79807c5b2355.png)