这两天,冬奥会的吉祥物“冰墩墩”可是火出了圈,说好的“一户一墩,实际却是一墩难求,今天早晨就有个同事一早去排队买给对象。

今天来个轻松的,用Python画一个绝对可爱的冰墩墩,代码太长,只展示部分,后面可以在Github获取完整内容。

 我试了下大概十分钟搞定,回家哄哄小朋友还是可以的。

 

关于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、添加代码并且运行

 

# coding=UTF-8
# This Python file uses the following encoding: utf-8
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

  

 

 

 

获取代码:

需要代码,可以在Git仓库查看

https://github.com/bingyue/bing-dwen-dwen