灰度圖、二值圖與詞雲圖—聖誕節案例
阿新 • • 發佈:2019-01-01
聖誕節小案例
目錄
在菜鳥學python中看到一篇推文,教大家生成不同的圖片,灰度圖、二值圖、詞雲的生成、字元圖和gif動圖
用Python畫聖誕老人的N種方法.
灰度圖
原圖
# 灰度圖
from PIL import Image
img = Image.open(r'C:\Users\hao\Desktop\程式設計\趣味案例\聖誕帽.jpg')
img = img. convert('L')
img.save(r'C:\Users\hao\Desktop\程式設計\趣味案例\聖誕帽灰度圖.jpg')
二值圖
#二值圖
from PIL import Image
img = Image.open(r'C:\Users\hao\Desktop\程式設計\趣味案例\聖誕帽.jpg')
img = img.convert('1')
img.save(r'C:\Users\hao\Desktop\程式設計\趣味案例\聖誕帽二值圖.jpg')
可以看到灰度圖和二值圖的程式碼只有在img.convert(‘L’) img.convert(‘1’)
PIL中有九種不同模式。分別為1,L,P,RGB,RGBA,CMYK,YCbCr,I,F。
詞雲圖
#詞雲
import jieba
import re
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
word_list = []
with open(r'C:\Users\hao\Desktop\程式設計\趣味案例\十九大報告全文.txt' ) as f:
words = f.read()
words = " ".join(jieba.cut(words)) # join()表示將字串以指定的形式連成新字串 這裡以 " " 的形式連線,即空格
#print(words)
for word in words.split(): #split() 以()內的形式 分割指定專案,這裡是 空格 形式
word = re.sub(r'[A-Za-z0-9\!\%\[\]\,\。“”,’‘、:?—!]','',word)
#print(word)
word_list.append(word)
words = ' '.join(word_list)
backgroud_image = plt.imread(r'C:\Users\hao\Desktop\程式設計\趣味案例\1.jpg')
wc = WordCloud(font_path='msyh.ttf', mask=backgroud_image,
background_color='white', max_words=1000)
my_wc = wc.generate_from_text(words)
image_colors = ImageColorGenerator(backgroud_image)
plt.imshow(my_wc.recolor(color_func=image_colors), )
plt.axis('off')
my_wc.to_file(r'C:\Users\hao\Desktop\程式設計\趣味案例\1聖誕帽詞雲圖.jpg')
以下為新模組和新函式的學習:
jieba
jieba.cut()使用Jieba工具中文分詞及文字聚類概念
#encoding=utf-8
import jieba
#全模式
text = "我來到北京清華大學"
seg_list = jieba.cut(text, cut_all=True)
print u"[全模式]: ", "/ ".join(seg_list)
#精確模式
seg_list = jieba.cut(text, cut_all=False)
print u"[精確模式]: ", "/ ".join(seg_list)
#預設是精確模式
seg_list = jieba.cut(text)
print u"[預設模式]: ", "/ ".join(seg_list)
#新詞識別 “杭研”並沒有在詞典中,但是也被Viterbi演算法識別出來了
seg_list = jieba.cut("他來到了網易杭研大廈")
print u"[新詞識別]: ", "/ ".join(seg_list)
#搜尋引擎模式
seg_list = jieba.cut_for_search(text)
print u"[搜尋引擎模式]: ", "/ ".join(seg_list)
re.sub()
re.sub 詳解Python中re.sub–轉載
re.sub共有五個引數。
其中三個必選引數:pattern, repl, string
兩個可選引數:count, flags
程式碼彙總
# 灰度圖
from PIL import Image
img = Image.open(r'C:\Users\hao\Desktop\程式設計\趣味案例\聖誕帽.jpg')
img = img.convert('L')
img.save(r'C:\Users\hao\Desktop\程式設計\趣味案例\聖誕帽灰度圖.jpg')
#二值圖
from PIL import Image
img = Image.open(r'C:\Users\hao\Desktop\程式設計\趣味案例\聖誕帽.jpg')
img = img.convert('1')
img.save(r'C:\Users\hao\Desktop\程式設計\趣味案例\聖誕帽二值圖.jpg')
#詞雲
import jieba
import re
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
word_list = []
with open(r'C:\Users\hao\Desktop\程式設計\趣味案例\十九大報告全文.txt') as f:
words = f.read()
words = " ".join(jieba.cut(words)) # join()表示將字串以指定的形式連成新字串 這裡以 " " 的形式連線,即空格
#print(words)
for word in words.split(): #split() 以()內的形式 分割指定專案,這裡是 空格 形式
word = re.sub(r'[A-Za-z0-9\!\%\[\]\,\。“”,’‘、:?—!]','',word)
#print(word)
word_list.append(word)
words = ' '.join(word_list)
backgroud_image = plt.imread(r'C:\Users\hao\Desktop\程式設計\趣味案例\1.jpg')
wc = WordCloud(font_path='msyh.ttf', mask=backgroud_image,
background_color='white', max_words=1000)
my_wc = wc.generate_from_text(words)
image_colors = ImageColorGenerator(backgroud_image)
plt.imshow(my_wc.recolor(color_func=image_colors), )
plt.axis('off')
my_wc.to_file(r'C:\Users\hao\Desktop\程式設計\趣味案例\1聖誕帽詞雲圖.jpg')