Python代码画喜羊羊怎么画_利用Python让你的命令行像蔡徐坤一样会打篮球

本文介绍了如何将视频转换为字符动画的技术实现过程。通过将视频分解为一系列图片,并将每张图片转换为由字符组成的灰度图像来形成动画效果。文章详细解释了从图片到字符画的转换原理,并提供了具体的实验步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原理

既然要开始做东西,首要的问题就是想好要怎么做,大家都知道视频是由一系列图片一帧一帧组成的,因此视频转字符动画最基本的便是图片转字符画。

在这里简单的说一下图片转字符画的原理:首先将图片转为灰度图,每个像素都只有亮度信息(用 0~255 表示)。然后我们构建一个有限字符集合,其中的每一个字符都与一段亮度范围对应,我们便可以根据此对应关系以及像素的亮度信息把每一个像素用对应的字符表示,这样字符画就形成了。

计算一张图片的灰度图像的方法如下(来自百度百科):

5c09ca486d831c4ed4d28d2104bf9e83.png

所以我们要做的就只是让字符画在命令行里面动起来就可以了。

aebe00e9e8ddd718ef56e6fe3ea32978.png

准备

环境和工具:

vscode

Mac OS

python 3.7

这次实验使用到的核心的库是opencv-python,关于opencv上篇文章已经简单介绍过了,这里不多阐述了,只要知道这是一个和计算机视觉有关的库就可以了。

实验

实验开始前我们需要安装opencv-python的包:

pip install opencv-python

读取视频

3fbb27eaedbb0f08e4812a1281b5b026.png

这里的VideoCapture是用来读取视频的,cv2.cvtColor(input_imageflag)用于转换颜色空间,其中flag就是转换类型。对于BGR↔Gray的转换,我们使用的flag就是cv2.COLOR_BGR2GRAY。对于BGR↔HSV的转换我们用的flag就是cv2.COLOR_BGR2HSV。

将帧转换成字符画

4b8a75af2a8ea94d88ec62c3b6da8042.png

这段代码其实就是将已经转变的灰度图的像素值映射到ascii_char上,然后输出到控制台。

控制输出

6f52009ac781b1c83c1020301c7a852d.png

执行

最后在main函数中设置下要读取的文件名,再play一下就可以了

4a8a1f7fa6caec360b92ba827ed200c6.png
以下是使用Python绘制蔡徐坤打篮球的示例代码: ```python import turtle # 蔡徐坤的身体 def draw_body(): turtle.penup() turtle.goto(0, -150) turtle.pendown() turtle.fillcolor('black') turtle.begin_fill() turtle.circle(150) turtle.end_fill() # 篮球 def draw_basketball(): turtle.penup() turtle.goto(-200, 0) turtle.pendown() turtle.fillcolor('orange') turtle.begin_fill() turtle.circle(50) turtle.end_fill() # 蔡徐坤的头 def draw_head(): turtle.penup() turtle.goto(0, 0) turtle.pendown() turtle.fillcolor('yellow') turtle.begin_fill() turtle.circle(100) turtle.end_fill() # 蔡徐坤的眼睛 def draw_eyes(): turtle.penup() turtle.goto(-30, 60) turtle.pendown() turtle.fillcolor('black') turtle.begin_fill() turtle.circle(15) turtle.end_fill() turtle.penup() turtle.goto(30, 60) turtle.pendown() turtle.fillcolor('black') turtle.begin_fill() turtle.circle(15) turtle.end_fill() # 蔡徐坤的嘴巴 def draw_mouth(): turtle.penup() turtle.goto(0, 20) turtle.pendown() turtle.fillcolor('red') turtle.begin_fill() turtle.circle(50, 180) turtle.end_fill() # 蔡徐坤的胳膊 def draw_arm(): turtle.penup() turtle.goto(-150, -50) turtle.pendown() turtle.setheading(60) turtle.pensize(30) turtle.forward(150) turtle.penup() turtle.goto(150, -50) turtle.pendown() turtle.setheading(120) turtle.forward(150) # 主函数 def main(): turtle.speed(0) draw_body() draw_basketball() draw_head() draw_eyes() draw_mouth() draw_arm() turtle.done() if __name__ == '__main__': main() ``` 运行代码后,会绘制出一个蔡徐坤打篮球的图像。你可以根据需要调整代码中的绘制参数来改变绘制效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值