如何利用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解析xml成对应的html示例分享
Apr 02 Python
用Python中的__slots__缓存资源以节省内存开销的方法
Apr 02 Python
python optparse模块使用实例
Apr 09 Python
Pycharm技巧之代码跳转该如何回退
Jul 16 Python
关于Python中浮点数精度处理的技巧总结
Aug 10 Python
Python即时网络爬虫项目启动说明详解
Feb 23 Python
Python简单定义与使用二叉树示例
May 11 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
Jun 13 Python
解决python selenium3启动不了firefox的问题
Oct 13 Python
Django 路由控制的实现
Jul 17 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
Oct 11 Python
python读取图片颜色值并生成excel像素画的方法实例
Feb 19 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
sqlyog 中文乱码问题的设置方法
2008/10/19 PHP
JavaScript TO HTML 转换
2006/06/26 Javascript
javascript document.images实例
2008/05/27 Javascript
JQuery下关于$.Ready()的分析
2009/12/13 Javascript
jQuery Flash/MP3/Video多媒体插件
2010/01/18 Javascript
JavaScript 浏览器验证代码(来自discuz)
2010/07/17 Javascript
使用滤镜设置透明导致 IE 6/7/8/9 解析异常的解决方法
2011/04/07 Javascript
js实现双向链表互联网机顶盒实战应用实现
2011/10/28 Javascript
Prototype源码浅析 String部分(二)
2012/01/16 Javascript
了解一点js的Eval函数
2012/07/26 Javascript
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
2013/04/26 Javascript
jquery ajax同步异步的执行最终解决方案
2013/04/26 Javascript
jquery自定义函数的多种方法
2014/01/09 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
2014/10/20 Javascript
全面解析多种Bootstrap图片轮播效果
2016/05/27 Javascript
微信小程序之电影影评小程序制作代码
2017/08/03 Javascript
vue 打包后的文件部署到express服务器上的方法
2017/08/09 Javascript
jQuery中 DOM节点操作方法大全
2017/10/12 jQuery
深入理解JavaScript的值传递和引用传递
2018/10/24 Javascript
详解Next.js页面渲染的优化方案
2019/01/27 Javascript
使用vue for时为什么要key【推荐】
2019/07/11 Javascript
nodejs实现UDP组播示例方法
2019/11/04 NodeJs
使用vuex较为优雅的实现一个购物车功能的示例代码
2019/12/09 Javascript
关于javascript中的promise的用法和注意事项(推荐)
2021/01/15 Javascript
单利模式及python实现方式详解
2018/03/20 Python
python 2.7 检测一个网页是否能正常访问的方法
2018/12/26 Python
浅谈盘点5种基于Python生成的个性化语音方法
2021/02/05 Python
Stutterheim瑞典:瑞典高级外套时装品牌
2019/06/24 全球购物
The North Face北面法国官网:美国著名户外品牌
2019/11/01 全球购物
党员违纪检讨书
2014/02/18 职场文书
元旦获奖感言
2014/03/08 职场文书
2014年商场国庆节活动策划方案
2014/09/16 职场文书
入伍志愿书怎么写?
2019/07/19 职场文书
js实现模拟购物商城案例
2021/05/18 Javascript
深入理解margin塌陷和margin合并的解决方案
2021/06/26 HTML / CSS
MySQL系列之七 MySQL存储引擎
2021/07/02 MySQL