-
实验目的
Wordcloud库函数练习、PIL库函数练习。
-
实验要求
1、简述词云的函数主要参数。
2、简述PIL image库中常用的函数。
3、简述数字图像在计算机中的存储方式及数字图像坐标系。
4、简述卷积操作的过程。
5、简述PIL对图像进行滤波处理有哪些滤波器?
6、完成例【3.73】使用指定的图片显示词云统计结果,并简要解释代码。
7、完成例【3.77】表情图片的合成并将结果转换成灰度图,并简要解释代码。
8、完成例【3.79】读取一张图像,并将其转换成文本数据,并简要解释代码。
9、完成例【3.81】使用自定义的边缘检测模板对图像进行处理,并简要解释代码。
-
实验过程与结果
1、简述词云的函数主要参数。
(1)Font_path 数据类型为string ,表示字体文件所在的路径
(2)width 数据类型为int , 表示画布宽度,默认为400px
(3)Height 数据类型为int , 表示画布高度,默认为200px
(4)Perfer_horizontal 数据类型为float ,表示词语水平方向排版出现的频率,默认为0.9
(5)Mask 数据类型为ndarray ,默认为None,使用二维遮罩绘制词云。如果mask非空,将忽略画布的宽度和高度,遮罩形状为mask
(6)Scale 数据类型为float ,表示放大画布的比例,默认为一倍
(7)Stopwords 数据类型为字符串 ,表示停用词,需要屏蔽的词,默认为空。如果为空,则使用内置的STOPWORDS
(8)Background_color 数据类型为字符串 ,表示背景颜色,默认为black黑色
2、简述PIL image库中常用的函数。
(1)open() 表示打开图像 save() 表示保存图像 convert()表示图像格式转换 show() 表示显示图像 split() 表示从图像中拆分出各个通道 merge() 表示将多个通道合成一个图像 crop() 表示剪裁指定区域 resize() 表示缩放图像 blend() 表示将两幅图混合成一幅 filter() 表示设置滤波器对图像进行处理 fromarray() 表示从numpy的ndarray数组生成图像
3、简述数字图像在计算机中的存储方式及数字图像坐标系。
数字图像在计算机内的存储方式是点阵式的,每个点存储了该像素的颜色值。在数字图像坐标系中,图像的起始点在左上角为(0,0).图像向右下方延申,假设纵轴为X轴表示,横轴为Y轴表示,则一个像素可以使用(X,Y)坐标来获取。
4、简述卷积操作的过程。
卷积是一种数学运算。图像处理中的卷积,是使用一个矩矩阵(称作算子、卷积核)对图像中的像素从头至尾,逐行、逐列进行处理。矩阵每次处理一个图像区域。该区域中的所有像素参与运算,然后相加,得到的和赋给位于区域中心的像素。于是,在一次卷积操作后,每个像素都会作为中心像素被更新。
5、简述PIL对图像进行滤波处理有哪些滤波器?
(1).BLUR:模糊
(2).CONTOUR:提取轮廓
(3).BETAIL:细节增强
(4).EDGE_ENHANCE:边缘增强
(5).EDGE_ENHANCE_MORE:深度边缘增强
(6).EMBOSS:浮雕效果
(7).FIND_EDGES:查找边缘
(8).SMOOTH:平滑
(9).SMOOTH_MORE:深度平滑
(10).SHARPEN:锐化
6、使用指定的图片显示词云统计结果,并简要解释代码。
from wordcloud import WordCloud
import matplotlib.pyplot as plt
from imageio import imread
text= open("song.txt",'r').read()
bg_pic= imread("notation.png")
stopwd=['is','a','the','to','of','in','on','at','and']
wdcd=WordCloud(mask=bg_pic,background_color='white',scale=1.5,stopwords=stopwd)
w=wdcd.generate(text)
plt.imshow(wdcd)
plt.axis('off')
plt.show()
wdcd.to_file('pic.jpg')
7、表情图片的合成并将结果转换成灰度图,并简要解释代码。
from PIL import Image
img1 =Image.open('1.jpg')
img1 = img1.convert('RGBA')
img2 = Image.open('2.jpg')
img2= img2.convert('RGBA')
img=Image.blend(img1,img2,0.5)
img.show()
img.save('blend.png')
8、读取一张图像,并将其转换成文本数据,并简要解释代码。
from PIL import Image
import numpy as np
import matplotlib.pyploy as plt
img = Image.open('lyy.png').convert('L')
img= np.array(img)
rows,cols = img.shape
txt = ""
for i in range(rows):
for j in range(cols):
if (img[i,j]<=128):
txt +='1'
else:
txt += '0'
txt += "\n"
with open('lyy.txt','w') as fl:
fl.write(txt)
9、使用自定义的边缘检测模板对图像进行处理,并简要解释代码。
from PIL import Image,ImageFilter
im = Image.open('boy.jpg')
im.filter(ImageFilter.CONTOUR).save(r'FindCt.jpg')
im.filter(ImageFilter.FIND_EDGES).save(r'FindEg.jpg')
from PIL import Image,ImageDraw
img = Image.open('boy.jpg')
myFilter=ImageFilter.CONTOUR
myFilter.name='counter'
myFilter.filterargs=((3,3),1,255,(-1,-1,-1,-1,8,-1,-1,-1,-1))
imgfilted_b=img.filter(myFilter)
imgfilted_b.save('newFindCt.jpg')
imgfilted_b.show()