本帖最后由 zac7 于 2019-8-15 17:23 编辑
做了两个小时的词云,遇到几个问题没有解决掉,大家要是有思路记得通知我。然后我顺便总结一下心得:
第一,import cv2这个已经不能用了,大家记得使用 opencv-python这个库,因为我的是python3.6版本,我记得这个cv2是python2.x and python3.4以下版本才能使用吧,反正python3.6不能下载,当然最后我也没使用cv2.imread()在百度上发现numpy也有读取图片的功能。就用的numpy
第二,我发现imread读取jpg模式很Lj,读取PNG可以,同样的图片,只是图片格式不一样,jpg就会很乱,png就能正确读取。
我问我之前的讲师,他说:“”跟源代码有关吧。png带有阿尔法通道(控制透明),容易处理成2色(黑和透明)来作为蒙版。“”
第三,你的蒙版图片必须是整个形状(第一张示意图),不能是多个形状(第二,三张示意图)。就例如:
第四,博客上有很多文章都是用的这个库 from scipy.misc import imread,这个库是python2.7才能用,大家切记!
第五,谁能做成前两张那种形状的词云记得通知我,谢谢各位大佬。
[Python] 纯文本查看 复制代码 #-*- coding:utf-8 -*-
# author:**ZLH**
# datetime:2019/8/15 14:19
# software: PyCharm
from wordcloud import WordCloud,ImageColorGenerator
# import cv2
import jieba
import matplotlib.pyplot as plt
import numpy
from PIL import Image
file = open('tmp.txt',mode='r') # tmp.txt是与代码同目录下的文档文件,里面存的是要做成词云的数据
text = file.read()
cut_text = " ".join(jieba.cut(text,cut_all=False)) # 进行精准的结巴分词 # cut_all, True为全模式,False为精确模式
print(cut_text)
color_mask = numpy.array(Image.open('2.png')) # 打开背景图片
cloud = WordCloud(
# 设置字体,不指定就会出现乱码
font_path='C:\Windows\Fonts\simhei.ttf',
# 设置背景色
background_color='white',
# 词云形状
mask=color_mask,
# 允许最大词汇
max_words=2000,
# 最大号字体
max_font_size=20
).generate(cut_text)
cloud.to_file('cloud.jpg')
image_colors = ImageColorGenerator(color_mask) # 图片颜色既是背景图片的颜色
# plt.title=("Distant savior")
plt.imshow(cloud.recolor(color_func=image_colors))
plt.imshow(cloud)# 以图片的形式显示词云
plt.figure()
"""
figure(num=None, figsize=None, dpi=None, facecolor=None, edgecolor=None, frameon=True)
num:图像编号或名称,数字为编号 ,字符串为名称
figsize:指定figure的宽和高,单位为英寸;
dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80 1英寸等于2.5cm,A4纸是 21*30cm的纸张
facecolor:背景颜色
edgecolor:边框颜色
frameon:是否显示边框
---------------------
"""
plt.axis("off")# 关闭坐标轴
plt.show() # 显示图片
效果展示图如下:
|