灰度图、二值图与词云图—圣诞节案例
目录
在菜鸟学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’) 部分有区别,不禁想到是不是还有其他的生成方式。于是百度了下Image模块的convert()函数。发现果然还有其他的模式
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.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详解Python中re.sub–转载
re.sub共有五个参数。
其中三个必选参数:pattern, repl, string
两个可选参数:count, flags