用Python打造你的專屬情人節賀卡,趕快發給TA浪漫一下吧
明天就是情人節了。這個情人節,註定是一個不能約會的情人節,但不能約會不代表不能浪漫。古人比我們出生早,那些浪漫的詩詞早都被他們挖掘一空,比詩詞我們肯定沒有機會了。好在我們還有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")
趕快發給女朋友浪漫一下吧:
相關文章
- 給你的SpringBoot專案定製一個牛年專屬banner吧Spring Boot
- 打造你專屬的ubuntu系統Ubuntu
- 給你專案加個Mock吧Mock
- 快來給你的寵物影片加個表情特效吧特效
- 送你情人節(劫)專屬Python全套程式碼Python
- 520,解鎖開發者的專屬浪漫
- 【遇見offer】微軟專場直播強勢來襲!快來領取你的專屬面試福利吧~微軟面試
- webpack4.x版本各種常見配置,快來打造屬於你自己的工作流吧(2Web
- [應用案例]小程式來了,收錄屬於你的小程式,快來提交吧
- 快端午了,用Python畫一盤粽子送給你Python
- 給你的開源專案加一個綬帶吧
- 用 Python 打造你的 EclipsePythonEclipse
- 區塊鏈的專業術語你知道嗎?趕快來收藏區塊鏈
- 耗時又繁重的SQL最佳化,以後就都交給TA吧!SQL
- 利用GPTs,打造你的專屬AI聊天機器人GPTAI機器人
- 面試官:你給我說一下什麼是時間輪吧?面試
- 快來為你的 .NET 應用加個監控吧!
- 快過年了,用Python寫副春聯&福字送給你~Python
- 你還在這樣寫SQL嗎?趕緊改改吧SQL
- Vite為什麼快呢?快在哪?說一下我自己的理解吧Vite
- 面試官:小夥子,你給我簡單說一下RocketMQ 整合 Spring Boot吧面試MQSpring Boot
- 用樂高玩具發明寫賀卡的機器人機器人
- 來開發一個wanandroid快應用吧NaNAndroid
- 微軟你再狠一些吧,把自己趕出中國微軟
- 面試官:你給我說一下執行緒池裡面的幾個鎖吧。面試執行緒
- 揭秘淘寶搜尋API:打造你的專屬購物搜尋引擎!API
- 打造專案專屬圖示庫
- 給Java初學者的十條小建議,快來收藏吧!Java
- 給你的 VuePress 新增 Gitalk 評論外掛吧VueGit
- 你說一下對Java中的volatile的理解吧Java
- 心情不好的時候,用 Python 畫棵櫻花樹送給自己吧Python
- Python趣味程式設計:定時給Ta講笑話Python程式設計
- 給自己的專案釋出一個文件吧
- 報名進入尾聲,趕快申請加入 sealer 開源之夏吧!
- 找個IT男做老公吧(請轉給你的女友)
- 48天打造你的專屬 Twilio——淺談運營商通訊中臺
- 打造屬於你自己的instagram! 全棧專案(react + egg.js)全棧ReactJS
- 情人節來了,教你個用 Python 表白的技巧Python