如何利用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编程入门的一些基本知识
May 13 Python
python去除文件中空格、Tab及回车的方法
Apr 12 Python
django解决跨域请求的问题详解
Jan 20 Python
python代码编写计算器小程序
Mar 30 Python
python模拟鼠标点击和键盘输入的操作
Aug 04 Python
python字符串格式化方式解析
Oct 19 Python
python函数局部变量、全局变量、递归知识点总结
Nov 15 Python
解决jupyter notebook 出现In[*]的问题
Apr 13 Python
windows支持哪个版本的python
Jul 03 Python
Python机器学习工具scikit-learn的使用笔记
Jan 28 Python
尝试使用Python爬取城市租房信息
Apr 12 Python
Python 绘制多因子柱状图
May 11 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
认识并使用PHP超级全局变量
2010/01/26 PHP
php批量删除数据库下指定前缀的表以prefix_为例
2014/08/24 PHP
Yii CDBCriteria常用方法实例小结
2017/01/19 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
Alliance vs Liquid BO3 第一场2.13
2021/03/10 DOTA
js监听键盘事件示例代码
2013/07/26 Javascript
JavaScript中判断页面关闭、页面刷新的实现代码
2014/08/27 Javascript
javascript中2个感叹号的用法实例详解
2014/09/04 Javascript
简单实现异步编程promise模式
2015/07/31 Javascript
mpvue中配置vuex并持久化到本地Storage图文教程解析
2018/03/15 Javascript
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
2018/12/20 Javascript
JS数组的高级使用方法示例小结
2020/03/14 Javascript
使用JavaScript获取扫码枪扫描得到的条形码的思路代码详解
2020/06/10 Javascript
[04:13]2014DOTA2国际邀请赛 专访DC目前形势不容乐观
2014/07/12 DOTA
[10:14]2018DOTA2国际邀请赛寻真——paiN Gaming不仅为自己而战
2018/08/14 DOTA
Python cookbook(数据结构与算法)同时对数据做转换和换算处理操作示例
2018/03/23 Python
Python获取指定字符前面的所有字符方法
2018/05/02 Python
解决python ogr shp字段写入中文乱码的问题
2018/12/31 Python
Python pandas实现excel工作表合并功能详解
2019/08/29 Python
Python Matplotlib简易教程(小白教程)
2020/07/28 Python
python实现磁盘日志清理的示例
2020/11/05 Python
Python加载数据的5种不同方式(收藏)
2020/11/13 Python
Pycharm 如何一键加引号的方法步骤
2021/02/05 Python
利用css3-animation实现逐帧动画效果
2016/03/10 HTML / CSS
如何用SQL语句进行模糊查找
2015/09/25 面试题
教师的实习鉴定
2013/12/15 职场文书
拾金不昧表扬信范文
2014/01/11 职场文书
企业标语大全
2014/07/01 职场文书
关于成绩下滑的自我检讨书
2014/09/20 职场文书
学生穿着不得体检讨书
2014/10/12 职场文书
大学开学感言
2015/08/01 职场文书
创业计划书之奶茶店开店方案范本!
2019/08/06 职场文书
浅谈Python 中的复数问题
2021/05/19 Python
一劳永逸彻底解决pip install慢的办法
2021/05/24 Python
德生BCL3000抢先使用感受和评价
2022/04/07 无线电