如何利用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设计模式中单例模式的实现及在Tornado中的应用
Mar 02 Python
梯度下降法介绍及利用Python实现的方法示例
Jul 12 Python
python 获取当天每个准点时间戳的实例
May 22 Python
python进行TCP端口扫描的实现
Dec 21 Python
python中的decimal类型转换实例详解
Jun 26 Python
django框架使用方法详解
Jul 18 Python
python实现猜拳小游戏
Apr 05 Python
python中几种自动微分库解析
Aug 29 Python
Python进程Multiprocessing模块原理解析
Feb 28 Python
Python tkinter布局与按钮间距设置方式
Mar 04 Python
python datetime时间格式的相互转换问题
Jun 11 Python
用PYTHON去计算88键钢琴的琴键频率和音高
Apr 10 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
使用dump函数,给php加断点测试
2013/06/25 PHP
PHP实现将视频转成MP4并获取视频预览图的方法
2015/03/12 PHP
YII框架常用技巧总结
2019/04/27 PHP
$()JS小技巧
2007/07/21 Javascript
javascript IE中的DOM ready应用技巧
2008/07/23 Javascript
cnblogs中在闪存中屏蔽某人的实现代码
2010/11/14 Javascript
JS定时刷新页面及跳转页面的方法
2013/07/04 Javascript
js判断字符长度及中英文数字等
2014/03/19 Javascript
Javascript实现鼠标右键特色菜单
2015/08/04 Javascript
解决AngualrJS页面刷新导致异常显示问题
2017/04/20 Javascript
jQuery实现radio第一次点击选中第二次点击取消功能
2017/05/15 jQuery
浅析 NodeJs 的几种文件路径
2017/06/07 NodeJs
解决Mac安装thrift因bison报错的问题
2018/05/17 Javascript
vue2.0基于vue-cli+element-ui制作树形treeTable
2019/04/30 Javascript
JavaScript中var的重要性实例分析
2019/07/09 Javascript
koa2服务端使用jwt进行鉴权及路由权限分发的流程分析
2019/07/22 Javascript
Vue+Spring Boot简单用户登录(附Demo)
2020/11/12 Javascript
python用Pygal如何生成漂亮的SVG图像详解
2017/02/10 Python
Python正则表达式教程之三:贪婪/非贪婪特性
2017/03/02 Python
opencv python 傅里叶变换的使用
2018/07/21 Python
python+opencv实现高斯平滑滤波
2020/07/21 Python
Python离线安装PIL 模块的方法
2019/01/08 Python
Python3爬虫之自动查询天气并实现语音播报
2019/02/21 Python
Scrapy-Redis结合POST请求获取数据的方法示例
2019/05/07 Python
Django如何使用第三方服务发送电子邮件
2019/08/14 Python
python实现机器人卡牌
2019/10/06 Python
python 如何去除字符串头尾的多余符号
2019/11/19 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧装饰器信号与槽详细使用方法与实例
2020/03/06 Python
基于Python测试程序是否有错误
2020/05/16 Python
Sofmap官网:日本著名的数码电器专卖店
2017/05/19 全球购物
Mountain Warehouse波兰官方网站:英国户外品牌
2019/08/29 全球购物
《三个小伙伴》教学反思
2014/04/11 职场文书
俞敏洪一分钟演讲稿
2014/08/26 职场文书
个人剖析材料范文
2014/09/30 职场文书
工程主管竞聘书
2015/09/15 职场文书
vue ref如何获取子组件属性值
2022/03/31 Vue.js