灰度图、二值图与词云图—圣诞节案例

目录

在菜鸟学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

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')

猜你喜欢

转载自blog.csdn.net/shuyueliang1/article/details/85254329