明天就是情人节了。这个情人节,注定是一个不能约会的情人节,但不能约会不代表不能浪漫。古人比我们出生早,那些浪漫的诗词早都被他们挖掘一空,比诗词我们肯定没有机会了。好在我们还有Python,不然都不知道该如何表达浪漫。接下来,浪导教你制作一个浪漫的情人节专属贺卡。

首先,准备一张你们的合影和一段深情的表白。浪导已经过了恋爱的年龄,照片和情话只好借用https://baijiahao.baidu.com/s?id=1658389297213946646&wfr=spider&for=pc里面的内容。 侵删。

原图及制作完成后的贺卡放在一起,效果如下图:

1. 处理照片

我选择了这张图片:

将人形的部分处理成纯白色:

>>> import cv2
>>> import numpy as np
>>> from PIL import Image
>>> img = cv2.imread('d:\\photo.jpg')
>>> mask = np.zeros(img.shape[:2], np.uint8)
>>> size = (1, 65)
>>> bgd = np.zeros(size, np.float64)
>>> fgd = np.zeros(size, np.float64)
>>> rect = (1, 1, img.shape[1], img.shape[0])
>>> cv2.grabCut(img, mask, rect, bgd, fgd, 10, cv2.GC_INIT_WITH_RECT)
>>> mask2 = np.where((mask == 2) | (mask == 0), 1, 255)
>>> img = img.astype(np.int32)
>>> img *= mask2[:, :, np.newaxis]
>>> img[img>255] = 255
>>> img =img.astype(np.uint8)
>>> img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
>>> img = Image.fromarray(img, 'RGB')
>>> img.save('d:\\mask.jpg')

最后的结果:

稍微有点瑕疵,不要紧,这不影响后面的效果。

2. 生成词云

用wordcloud库,可以很轻松的生成词云,首先,安装wordcloud:

pip install wordcloud

安装完成,就可以生成词云了:

>>> from wordcloud import WordCloud
>>> fp = open(r"d:\情话.txt", "r")
>>> text = fp.read()
>>> text
'春风十里,不及相遇有你;晴空万里,不及心中有你。\n世人万千种,浮云莫去求;斯人若彩虹,遇上方知有。\n没有电影电视剧的浪漫,不敢许你三生三世,只愿给你两厅三室。\n你可以把余生交给我保管,可以霸占我情话里的每一句喜欢。\n青山不及你眉长,水清不似你目澈,跨过山水几场雨,我一生只要一个你。\n我并没有喜欢哪一种类型的人,如果我喜欢你,我喜欢的就只是你。\n春花,秋月,夏日清风,冬日暮雪,这些都很美,但唯有你的心里,才是我想去的四季。\n世上最牢固的感情不是“我爱你”,而是“我习惯了有你”。彼此依赖,才是最深的相爱。\n你在身边的时候,你就是整个世界;你不在身边的时候,整个世界都是你。\n这世界上你或许不是最优秀的人,但我爱上你的时候,你就是我的全世界!\n遇见你是无意,认识你是天意,想着你是情意,不见你时三心二意,见到你便一心一意。\n我看那晚霞是红的,因为它怀里搂着个太阳。我想我的脸也该是红的吧,因为我心里住着你。'
>>> wordcloud=WordCloud(font_path="C:/Windows/Fonts/simfang.ttf", background_color="black",width=600,height=300,max_words=50).generate(text)
>>> image=wordcloud.to_image()
>>> image.save("d:\\wordcloud1.png")

结果如下:

wordcloud支持掩码,可以利用前面处理好的图片,生成指定形状的词云:

>>> import numpy as np
>>> from PIL import Image
>>> mask_pic=numpy.array(Image.open(r"d:\mask.jpg"))
>>> wordcloud = WordCloud(font_path=r"C:\Windows\Fonts\simfang.ttf",mask=mask_pic).generate(text)
>>> image=wordcloud.to_image()
>>> image.save("d:\\wordcloud2.png")

结果为:

3. 生成贺卡

wordcloud不支持生成透明图片,我们需要自己把图片处理成透明:

>>> cloud_data = np.array(image)
>>> alpha = np.copy(could_data[:,:,0])      # 生成透明通道
>>> alpha[alpha>0] = 255                    # 不是黑的地方设置为255
>>> new_image = Image.fromarray(np.dstack((cloud_data, alpha)))

最后使用PIL将两个图层进行合并:

>>> card = Image.open("d:\\photo.jpg")
>>> card = card.convert("RGBA")
>>> card.paste(new_cloud, (0,0), mask=new_cloud)
>>> card.save("d:\\card.png")

赶快发给女朋友浪漫一下吧:

用Python打造你的专属情人节贺卡,赶快发给TA浪漫一下吧相关推荐

  1. 用Python制作你的专属音乐播放器(此刻浪漫只属于你哦*´▽`*)

    文章目录 前言 一.项目介绍 二.环境配置 三.代码实战 前言 昨天是博主的一位朋友生日,除了送上大大的红包,知道他喜欢听音乐,特意用代码给他写了一个 专属音乐播放器,今天把这个代码也开源送给所有粉丝 ...

  2. Python 带你花式过情人节

    阅读文本大概需要 5 分钟. 一年 N 度的情人节又又又又又到了!有对象的人在享受着甜蜜的烦恼:今天 ta 会送我什么礼物?今天晚上去哪里度过?今天去哪里一起吃饭过节呢?啊!ta 竟然送我这么贵的礼物 ...

  3. Python打造抖音情人节专属表白神器(女神不得不接受的那种哦)

    这个炎炎夏日,就让小编来安抚一下你的小心灵吧!零基础利用Python打造情人节专属表白神器,70行代码,让女神不能拒绝的操作!准备好了吗?上车! 这个操作女神可能拒绝你吗? 需要源码!以及各种Pyth ...

  4. python 面部识别_一文教你在Python中打造你自己专属的面部识别系统

    原标题:一文教你在Python中打造你自己专属的面部识别系统 人脸识别是用户身份验证的最新趋势.苹果推出的新一代iPhone X使用面部识别技术来验证用户身份.百度也在使"刷脸"的 ...

  5. python程序 爱意_情人节来袭,Python打造最强表白程序,甜蜜暴击

    原标题:情人节来袭,Python打造最强表白程序,甜蜜暴击 一年一度的七夕又来了,有对象的在享受甜蜜的烦恼,没对象的该干嘛就干嘛去! 没对象的怎么表白女生?有对象的怎么给对方甜蜜惊喜?不用急,小编这就 ...

  6. 如何设置计划任务程序 每6小时运行一次_如何用 Python 打造一个全自动赚钱的 YouTube 视频发布系统并月入过万(被动收益)

    前言 这篇文章将告诉你如何通过Python打造一台全自动发布YouTube视频并专区美元收益的系统. 目前我自己用的这套系统已基本稳定运行了三个月.其中一个YouTube频道从零起步到达到最低开通获利 ...

  7. (转载) 如何利用github打造博客专属域名

    转载请标明出处: http://blog.csdn.net/lmj623565791/article/details/51319147: 本文出自:[张鸿洋的博客] 一.概述 哈,本篇博客不属于And ...

  8. python拿什么做可视化界面好-用python打造可视化爬虫监控系统,酷炫的图形化界面...

    原标题:用python打造可视化爬虫监控系统,酷炫的图形化界面 本文并不是讲解爬虫的相关技术实现的,而是从实用性的角度,将抓取并存入 MongoDB 的数据 用 InfluxDB 进行处理,而后又通过 ...

  9. python链接mysql系统结构设计_第11章:使用Python打造MySQL专家系统

    1.Python语言高级特性 1).深入浅出Python生成器 1).生成器函数:与普通函数定义类似,使用yield语句而不是return语句返回结果.yield语句一次返回一个结果,在每个结果中间挂 ...

最新文章

  1. 2021院士候选人,近150人获提名!看看有没有自己的母校~
  2. redis 基本类型和命令(一)
  3. 文字color颜色渐变(可一直变换) - 代码篇
  4. 影响线型缩聚物分子量的因素_高分子化学试题
  5. 初学者web前端知识点--HTML部分
  6. java new一个线程执行完后会自动销毁吗_Java基础总结,超级全的面试题
  7. WordPress post和page的区别
  8. LeetCode-----重建二叉树
  9. C#使用StreamWriter类写入文件文件
  10. 怎样使绝对定位的子元素铺满父元素并且子元素可以设置padding
  11. JS高级讲解面向对象,原型,继承,闭包,正则表达式,让你彻底爱上前端(进阶二)...
  12. 2008年管理软件行业的七大趋势预测
  13. C语言-字符型数据与ASCII码表
  14. 计算机进制算法在线,16进制计算(十六进制计算器在线)
  15. 如何清洁Mac的屏幕
  16. 体验了下人民搜索,写个体验报告
  17. 数据结构队列算法——模拟病人在医院等待就诊过程
  18. java 9宫格抽奖_js 实现9宫格抽奖(react)
  19. el-table单元格中加上横向柱状图
  20. 让谷歌浏览器不再显示不安全内容的提示

热门文章

  1. Camera2报错: BufferQueue has been abandoned
  2. LIBSVM (三) 葡萄酒种类识别
  3. org.apache.tools.ant.Task在哪个jar包
  4. Git如何回滚代码? 1
  5. 魏则西事件中,百度属于一般的龌龊
  6. Windows远程桌面连接cpolar
  7. 入职体检尿常规检查什么?
  8. 黑苹果:仅适用ASUS Z390-H主板(败家之眼)
  9. opencv python抓取屏幕数字
  10. python 各种开源库