如何利用Python给自己的头像加一个小国旗(小月饼)

作者:Python小二 时间:2023-09-15 20:47:31 

如何利用Python给自己的头像加一个小国旗(小月饼)

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

国旗

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

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


turtle.setup(600, 400, 0, 0)
turtle.bgcolor("red")

效果如下:

如何利用Python给自己的头像加一个小国旗(小月饼)

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


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()

效果如下:

如何利用Python给自己的头像加一个小国旗(小月饼)

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


# 副星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给自己的头像加一个小国旗(小月饼)

月饼

对于月饼也可以用 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()

效果如下:

如何利用Python给自己的头像加一个小国旗(小月饼)

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


# 设置画笔粗细
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()

效果如下:

如何利用Python给自己的头像加一个小国旗(小月饼)

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


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

最终效果如下:

如何利用Python给自己的头像加一个小国旗(小月饼)

头像加国旗(月饼)

最后,我们将刚才画好的国旗或月饼加到自己的头像上,用到的 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给自己的头像加一个小国旗(小月饼)

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

如何利用Python给自己的头像加一个小国旗(小月饼)

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

如何利用Python给自己的头像加一个小国旗(小月饼)

来源:https://blog.csdn.net/ityard/article/details/108892864

标签:python,头像,国旗
0
投稿

猜你喜欢

  • Python图像识别+KNN求解数独的实现

    2021-06-11 19:48:23
  • 用ASP在线创建Word与Excel文档

    2008-07-20 19:17:00
  • Python参数解析器configparser简介

    2021-04-22 02:23:31
  • 解决python replace函数替换无效问题

    2022-05-20 18:51:57
  • FCKeditor编辑器添加图片上传功能及图片路径问题解决方法

    2022-12-15 01:07:10
  • Golang如何交叉编译各个平台的二进制文件详解

    2024-05-22 17:48:47
  • 浅谈js的html元素的父节点,子节点

    2024-04-23 09:31:56
  • python lambda函数及三个常用的高阶函数

    2022-09-25 16:40:58
  • Python多线程获取返回值代码实例

    2023-03-25 17:42:27
  • Python中创建表格详细过程

    2023-10-08 02:42:51
  • Go for-range 的 value值地址每次都一样的原因解析

    2023-09-23 12:59:20
  • 详解Vue3如何加载动态菜单

    2024-04-27 15:56:52
  • javascript div 遮罩层封锁整个页面

    2024-06-09 01:20:09
  • 基于python批量处理dat文件及科学计算方法详解

    2021-05-16 18:00:12
  • 分享下GET和POST的真正区别

    2023-10-19 23:23:09
  • np.hstack()和np.dstack()的使用

    2021-02-03 12:52:15
  • 详解git合并冲突解决方法

    2023-05-11 05:18:34
  • Centos下升级php5.2到php5.4全记录(编译安装)

    2024-05-05 09:18:30
  • 十万条Access数据表分页的两个解决方法

    2008-05-23 18:24:00
  • mysql 错误:ERROR 1045 (28000): Access deni

    2010-09-30 14:48:00
  • asp之家 网络编程 m.aspxhome.com