用Python给自己的头像加一个小国旗或者小月饼

python

今天是国庆节也是中秋节,首先祝大家节日快乐,本文我们使用 Python 来给自己的头像加一个小国旗或小月饼。

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:961562169

国旗

对于国旗,我们可以使用 Python 来画一个,用到的 Python 库是大家比较熟悉的 turtle,我们的五星红旗组成元素包括:红底、一颗黄的主星和四颗黄的副星。

首先画一个长方形的红底,代码实现如下:

turtle.setup(600, 400, 0, 0)

turtle.bgcolor("red")

效果如下:

接着画一颗主星,代码实现如下:

turtle.fillcolor("yellow")

turtle.color("yellow")

turtle.speed(10)

# 主星

turtle.begin_fill()

turtle.up()

turtle.goto(-280,100)

turtle.down()

for i in range (5):

turtle.forward(150)

turtle.right(144)

turtle.end_fill()

效果如下:

最后画四颗副星,代码实现如下:

# 副星1

turtle.begin_fill()

turtle.up()

turtle.goto(-100,180)

turtle.setheading(305)

turtle.down()

for i in range (5):

turtle.forward(50)

turtle.left(144)

turtle.end_fill()

# 副星2

turtle.begin_fill()

turtle.up()

turtle.goto(-50,110)

turtle.setheading(30)

turtle.down()

for i in range (5):

turtle.forward(50)

turtle.right(144)

turtle.end_fill()

# 副星3

turtle.begin_fill()

turtle.up()

turtle.goto(-40,50)

turtle.setheading(5)

turtle.down()

for i in range (5):

turtle.forward(50)

turtle.right(144)

turtle.end_fill()

# 副星4

turtle.begin_fill()

turtle.up()

turtle.goto(-100,10)

turtle.setheading(300)

turtle.down()

for i in range (5):

turtle.forward(50)

turtle.left(144)

turtle.end_fill()

最终效果如下:

月饼

对于月饼也可以用 Python 来画一个,月饼组成元素主要包括:外层圆形的花纹轮廓、内层轮廓和文字。

首先来画外层圆形的花纹轮廓,代码实现如下:

turtle.speed(100)

turtle.color("#F5E16F")

for i in range(20):

# 顺时针移动18度

turtle.right(18)

turtle.begin_fill()

# 向前移动的距离

turtle.forward(220)

# 画半径为 40 的半圆

turtle.circle(40, 180)

# 画完半圆之后回到(0,0)

turtle.goto(0, 0)

turtle.right(360)

turtle.end_fill()

效果如下:

再接着画内层轮廓,代码实现如下:

# 设置画笔粗细

turtle.pensize(20)

# 填充颜色(外部、内部)

turtle.color("#F5E16F", "#FF9933")

goto(0, -200)

# 准备开始填充

turtle.begin_fill()

turtle.circle(200)

# 填充结束

turtle.end_fill()

turtle.right(360)

turtle.color("#F5E16F")

goto(0, -180)

for i in range(12):

turtle.begin_fill()

turtle.circle(60, 120)

turtle.left(180)

turtle.circle(60, 120)

turtle.end_fill()

效果如下:

最后来添加文字,比如豆沙馅的就添加豆沙两个字,代码实现如下:

turtle.color("#F5E16F")

turtle.write("豆沙", font=("隶书", 60, "bold"))

最终效果如下:

头像加国旗(月饼)

最后,我们将刚才画好的国旗或月饼加到自己的头像上,用到的 Python 库是 OpenCV,安装使用 pip install opencv-python 命令即可,如果速度太慢,可以使用 pip install -i https://mirrors.aliyun.com/pypi/simple/ opencv-python 加速下载安装。

这个功能实现起来也比较简单,只需十几行 Python 代码就可以搞定,代码实现如下:

# 读取头像和国旗图案

img_head = cv2.imread("head.jpg")

img_flag = cv2.imread("flag.png")

# 获取头像和国旗图案宽度

w_head, h_head = img_head.shape[:2]

w_flag, h_flag = img_flag.shape[:2]

# 计算图案缩放比例

scale = w_head / w_flag / 4

# 缩放图案

img_flag = cv2.resize(img_flag, (0, 0), fx=scale, fy=scale)

# 获取缩放后新宽度

w_flag, h_flag = img_flag.shape[:2]

# 按 3 个通道合并图片

for c in range(0, 3):

img_head[w_head - w_flag:, h_head - h_flag:, c] = img_flag[:, :, c]

# 保存最终结果

cv2.imwrite("new_head.jpg", img_head)

假如我的原头像如下:

给头像加个小国旗,效果如下:

给头像加个小月饼,效果如下:

以上是 用Python给自己的头像加一个小国旗或者小月饼 的全部内容, 来源链接: utcz.com/z/530851.html

回到顶部