实现“一户一墩”,教你用Python画一个冰墩墩
这两天,冬奥会的吉祥物“冰墩墩”可是火出了圈,说好的“一户一墩,实际却是一墩难求,今天早晨还看到朋友圈里有朋友五点就去排队了。
今天来个轻松的,教大家用Python画一个绝对可爱的冰墩墩,代码太长,只展示部分,可以在后台留言"冰墩墩"获取完整内容。
关于Turtle 库
Turtle库是Python中的一个绘制图像的函数库,turtle就是一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制图形。
绘图版冰墩墩
1、打开编辑器,创建一个BingDwenDwen.py文件,需要逐个坐标进行描绘,只展示一部分代码:
# 调节绘制速度
t.speed(10)
# 左手
t.penup()
t.goto(177, 112)
...
# 五环
t.penup()
t.goto(-5, -170)
t.pendown()
t.pencolor("blue")
t.circle(6)
t.pencolor("black")
t.goto(-16, -160)
# 冬奥会说明
t.write("BEIJING 2022", font=('Arial', 10, 'bold italic'))
t.hideturtle()
2、执行程序:
python BingDwenDwen.py
3、成功!
图像识别版冰墩墩
Turtle是一个非常好用的自动绘图工具库,但是用它来画图需要提供大量的坐标点,需要反复的执行,代码非常冗长,适合一些简单的图像描绘。
下面我们用计算机图像识别,来自动获取图片的位置坐标帮助进行画图,复制一个更加高清的冰墩墩。
首先你需要一张冰墩墩的图片,命名为bingdwendwen.png,和python代码在同一个目录下。
下面需要使用open-cv的库,以下步骤如果你的机器已经安装可以跳过:
1、安装pip程序库
如果你还未安装pip,则可以使用以下方法来安装,以下针对Mac系统,Windows系统可以搜索下相关命令:
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py # 下载安装脚本
$ sudo python get-pip.py # 运行安装脚本
注意:用哪个版本的 Python 运行安装脚本,pip 就被关联到哪个版本,如果是 Python3 则执行以下命令:
$ sudo python3 get-pip.py # 运行安装脚本
一般情况 pip 对应的是 Python 2.7,pip3 对应的是 Python 3.x。
2、安装opencv-python库
opencv-python是一个图像和视频处理库,官网如下 https://pypi.org/project/opencv-python/
可以在terminal输入下面代码直接安装:
$ pip install opencv-python
命令行下使用pydoc命令查看安装的Module:
在命令行下运行$ pydoc modules 即可查看。
3、添加代码并且运行
import turtle as t
import cv2
t.title('BingDwenDwen_CV 公众号:越哥聊IT')
t.getscreen().colormode(255)
# 调用opencv读取并创建灰度图像,按BGR顺序
img = cv2.imread("bingdwendwen.png")[0: -2: 2]
width = len(img[0])
height = len(img)
t.setup(width=width / 2 + 100, height=height + 100)
t.pu()
t.goto(-width / 4 + 10, height / 2 - 10)
t.pd()
t.tracer(2000)
for k1, i in enumerate(img):
for j in i[::2]:
t.pencolor((j[0], j[1], j[2]))
t.fd(1)
t.pu()
t.goto(-width / 4 + 10, height / 2 - 10 - k1 - 1)
t.pd()
t.done()
这个代码实际是读取图片,然后把坐标数据传递给Turtle,下面执行程序:
python BingDwenDwen_cv.py
获取代码:
需要代码,可以在后台留言"冰墩墩",会自动发送代码文件。
大家都在看:
题图来自 Unsplash,基于 CC0 协议使用