如何利用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聚类算法之基本K均值实例详解
Nov 20 Python
python实现下载整个ftp目录的方法
Jan 17 Python
Python实现读取及写入csv文件的方法示例
Jan 12 Python
Python3实现的爬虫爬取数据并存入mysql数据库操作示例
Jun 06 Python
Python二进制串转换为通用字符串的方法
Jul 23 Python
python批量创建指定名称的文件夹
Mar 21 Python
Python3.5装饰器原理及应用实例详解
Apr 30 Python
Python3 文章标题关键字提取的例子
Aug 26 Python
完美解决keras保存好的model不能成功加载问题
Jun 11 Python
Python内置方法和属性应用:反射和单例(推荐)
Jun 19 Python
Python 程序员必须掌握的日志记录
Aug 17 Python
Python unittest生成测试报告过程解析
Sep 08 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
在PHP3中实现SESSION的功能(三)
2006/10/09 PHP
基于JQuery+PHP编写砸金蛋中奖程序
2015/09/08 PHP
Yii2使用swiftmailer发送邮件的方法
2016/05/03 PHP
SCP远程VPS快速搬家和WDCP升级php5.3安装memcached和eaccelerator教程
2017/07/27 PHP
PHP array_reduce()函数的应用解析
2018/10/28 PHP
一个JS小玩意 几个属性相加不能超过一个特定值.
2009/09/29 Javascript
javascript 用记忆函数快速计算递归函数
2010/03/15 Javascript
nodejs实用示例 缩址还原
2010/12/28 NodeJs
基于jquery的cookie的用法
2011/01/10 Javascript
JS调用页面表格导出excel示例代码
2014/03/18 Javascript
JS button按钮实现submit按钮提交效果
2016/11/01 Javascript
jQuery插件FusionCharts绘制ScrollColumn2D图效果示例【附demo源码下载】
2017/03/22 jQuery
bootstrap模态框远程示例代码分享
2017/05/22 Javascript
基于JavaScript表单脚本(详解)
2017/10/18 Javascript
使用typescript开发angular模块并发布npm包
2018/04/19 Javascript
JavaScript创建对象的常用方式总结
2018/08/10 Javascript
vue-cli 目录结构详细讲解总结
2019/01/15 Javascript
详解使用angular框架离线你的应用(pwa指南)
2019/01/31 Javascript
jQuery实现form表单基于ajax无刷新提交方法实例代码
2019/11/04 jQuery
JavaScript中this的学习笔记及用法整理
2020/02/17 Javascript
python 字符串格式化代码
2013/03/17 Python
python爬取51job中hr的邮箱
2016/05/14 Python
详解Python实现多进程异步事件驱动引擎
2017/08/25 Python
python错误调试及单元文档测试过程解析
2019/12/19 Python
完美解决pycharm导入自己写的py文件爆红问题
2020/02/12 Python
详解如何在PyCharm控制台中输出彩色文字和背景
2020/08/17 Python
Python自动化办公Excel模块openpyxl原理及用法解析
2020/11/05 Python
Waterford加拿大官方网站:世界著名的水晶杯品牌
2016/11/01 全球购物
Linux如何修改文件和文件夹的权限
2013/09/05 面试题
最美护士演讲稿
2014/08/27 职场文书
店铺转让协议书
2015/01/29 职场文书
2015秋季开学典礼致辞
2015/07/16 职场文书
创业计划书之甜品店
2019/09/18 职场文书
php+laravel 扫码二维码签到功能
2021/05/15 PHP
Springboot中如何自动转JSON输出
2022/06/16 Java/Android
Win11使用CAD卡顿或者致命错误怎么办?Win11无法正常使用CAD的解决方法
2022/07/23 数码科技