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


Posted in Python onOctober 02, 2020

如何利用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给自己的头像加一个小国旗(小月饼)

总结

到此这篇关于如何利用Python给自己的头像加一个小国旗(小月饼)的文章就介绍到这了,更多相关Python给头像加小国旗(小月饼)内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python脚本实现查找webshell的方法
Jul 31 Python
详细解析Python中的变量的数据类型
May 13 Python
深入解析Python中的线程同步方法
Jun 14 Python
Python处理JSON数据并生成条形图
Aug 05 Python
详解Python 正则表达式模块
Nov 05 Python
python实现推箱子游戏
Mar 25 Python
Python3.5实现的三级菜单功能示例
Mar 25 Python
python 自动轨迹绘制的实例代码
Jul 05 Python
python redis 批量设置过期key过程解析
Nov 26 Python
pytorch使用 to 进行类型转换方式
Jan 08 Python
使用 Python ssh 远程登陆服务器的最佳方案
Mar 06 Python
Python Matplotlib绘制动画的代码详解
May 30 Python
Python通过fnmatch模块实现文件名匹配
Sep 30 #Python
Python tempfile模块生成临时文件和临时目录
Sep 30 #Python
Python实现定时监测网站运行状态的示例代码
Sep 30 #Python
python如何实现word批量转HTML
Sep 30 #Python
Python识别验证码的实现示例
Sep 30 #Python
Python列表嵌套常见坑点及解决方案
Sep 30 #Python
python实现感知机模型的示例
Sep 30 #Python
You might like
ThinkPHP3.0略缩图不能保存到子目录的解决方法
2012/09/30 PHP
解析php开发中的中文编码问题
2013/08/08 PHP
PHP+MySQL删除操作实例
2015/01/21 PHP
MySql数据库查询结果用表格输出PHP代码示例
2015/03/20 PHP
php文件上传你必须知道的几点
2015/10/20 PHP
PHP list() 将数组中的值赋给变量的简单实例
2016/06/13 PHP
浅谈PHP eval()函数定义和用法
2016/06/21 PHP
JS动画效果代码3
2008/04/03 Javascript
有道JavaScript监听浏览器的问题
2010/06/23 Javascript
JavaScript 盒模型 尺寸深入理解
2012/12/31 Javascript
HTTP 304错误的详细讲解
2013/11/13 Javascript
Javascript 数组排序详解
2014/10/22 Javascript
javascript实现rgb颜色转换成16进制格式
2015/07/10 Javascript
jQuery通过deferred对象管理ajax异步
2016/05/20 Javascript
浅谈json取值(对象和数组)
2016/06/24 Javascript
js利用正则表达式检验输入内容是否为网址
2016/07/05 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
2016/11/16 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
详解vue-cli3多环境打包配置
2019/03/28 Javascript
vue分页器组件编写方法详解
2019/06/28 Javascript
Python 数据结构之堆栈实例代码
2017/01/22 Python
Python基于pyCUDA实现GPU加速并行计算功能入门教程
2018/06/19 Python
pandas 将索引值相加的方法
2018/11/15 Python
selenium+python设置爬虫代理IP的方法
2018/11/29 Python
python tkinter组件使用详解
2019/09/16 Python
使用Python进行防病毒免杀解析
2019/12/13 Python
Jupyter Notebook 实现正常显示中文和负号
2020/04/24 Python
CSS3中的opacity属性使用教程
2015/08/19 HTML / CSS
Mountain Warehouse澳大利亚官网:欧洲家庭户外品牌倡导者
2016/11/20 全球购物
如何减少垃圾回收让内存更加有效使用
2013/10/18 面试题
汽车专业毕业生自荐信
2013/11/03 职场文书
入党自我评价优缺点
2014/01/25 职场文书
开展创先争优活动总结
2014/08/28 职场文书
平面设计师岗位职责
2014/09/18 职场文书
2016年高校自主招生自荐信范文
2015/03/24 职场文书
linux目录管理方法介绍
2022/06/01 Servers