這個(gè)情人節(jié)寺谤,注定是一個(gè)不能約會(huì)的情人節(jié),但不能約會(huì)不代表不能浪漫吮播。古人比我們出生早变屁,那些浪漫的詩(shī)詞早都被他們挖掘一空,比詩(shī)詞我們肯定沒有機(jī)會(huì)了意狠。好在我們還有Python粟关,不然都不知道該如何表達(dá)浪漫。接下來(lái)环戈,浪導(dǎo)教你制作一個(gè)浪漫的情人節(jié)專屬賀卡闷板。
首先澎灸,準(zhǔn)備一張你們的合影和一段深情的表白。浪導(dǎo)已經(jīng)過(guò)了戀愛的年齡蛔垢,照片和情話只好借用https://baijiahao.baidu.com/s?id=1658389297213946646&wfr=spider&for=pc里面的內(nèi)容击孩。 侵刪。
原圖及制作完成后的賀卡放在一起鹏漆,效果如下圖:
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')
最后的結(jié)果:
在這里插入圖片描述
稍微有點(diǎn)瑕疵巩梢,不要緊,這不影響后面的效果艺玲。
2. 生成詞云
用wordcloud庫(kù)括蝠,可以很輕松的生成詞云,首先饭聚,安裝wordcloud:
pip install wordcloud
安裝完成忌警,就可以生成詞云了:
>>> from wordcloud import WordCloud
>>> fp = open(r"d:\情話.txt", "r")
>>> text = fp.read()
>>> text
'春風(fēng)十里,不及相遇有你秒梳;晴空萬(wàn)里法绵,不及心中有你。\n世人萬(wàn)千種酪碘,浮云莫去求朋譬;斯人若彩虹,遇上方知有兴垦。\n沒有電影電視劇的浪漫徙赢,不敢許你三生三世,只愿給你兩廳三室探越。\n你可以把余生交給我保管狡赐,可以霸占我情話里的每一句喜歡。\n青山不及你眉長(zhǎng)钦幔,水清不似你目澈枕屉,跨過(guò)山水幾場(chǎng)雨,我一生只要一個(gè)你节槐。\n我并沒有喜歡哪一種類型的人搀庶,如果我喜歡你,我喜歡的就只是你铜异。\n春花哥倔,秋月,夏日清風(fēng)揍庄,冬日暮雪咆蒿,這些都很美,但唯有你的心里,才是我想去的四季沃测。\n世上最牢固的感情不是“我愛你”缭黔,而是“我習(xí)慣了有你”。彼此依賴蒂破,才是最深的相愛馏谨。\n你在身邊的時(shí)候,你就是整個(gè)世界附迷;你不在身邊的時(shí)候惧互,整個(gè)世界都是你。\n這世界上你或許不是最優(yōu)秀的人喇伯,但我愛上你的時(shí)候喊儡,你就是我的全世界!\n遇見你是無(wú)意稻据,認(rèn)識(shí)你是天意艾猜,想著你是情意,不見你時(shí)三心二意捻悯,見到你便一心一意匆赃。\n我看那晚霞是紅的,因?yàn)樗鼞牙飺е鴤€(gè)太陽(yáng)今缚。我想我的臉也該是紅的吧炸庞,因?yà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")
結(jié)果如下:
在這里插入圖片描述
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")
結(jié)果為:
在這里插入圖片描述
3. 生成賀卡
wordcloud不支持生成透明圖片,我們需要自己把圖片處理成透明:
>>> cloud_data = np.array(image)
>>> alpha = np.copy(could_data[:,:,0]) # 生成透明通道
>>> alpha[alpha>0] = 255 # 不是黑的地方設(shè)置為255
>>> new_image = Image.fromarray(np.dstack((cloud_data, alpha)))
最后使用PIL將兩個(gè)圖層進(jìn)行合并:
>>> card = Image.open("d:\\photo.jpg")
>>> card = card.convert("RGBA")
>>> card.paste(new_cloud, (0,0), mask=new_cloud)
>>> card.save("d:\\card.png")
趕快發(fā)給女朋友浪漫一下吧:
在這里插入圖片描述