本文,用scipy模块对图像进行滤波处理。
给定图片如下。
代码如下:
import scipy.misc as sc
b = sc.imread('0.png') #读图,以数组的形式返回
c = sc.imfilter(b,'blur') #滤波处理
sc.imsave('1.png',c) #保存图片
查看滤波函数的用法:
help(sc.imfilter)
…………
imfilter(array, str)
其中,array是数组,代表图片的像素数据;
str是字符串,用来指定处理效果,包括:
blur、contour、detail、edge_enhance、edge_enhance_more、emboss、find_edges、smooth、smooth_more、sharpen。
c = sc.imfilter(b,'blur')是模糊处理,效果如下。
连续多次模糊处理:
for i in range(6):
c = sc.imfilter(c,'blur')
或者
for i in range(36):
c = sc.imfilter(c,'blur')
c = sc.imfilter(b,'contour')
显示轮廓。
多次重复处理:
for i in range(36):
c = sc.imfilter(c,'contour')
c = sc.imfilter(b,'detail')
这是清晰化处理吗?
看看多次处理的后果:
for i in range(36):
c = sc.imfilter(c,'detail')
emboss
浮雕效果。
多次浮雕效果。
边界检测:
c = sc.imfilter(b,'find_edges')
边界检测,反色处理:
c = sc.imfilter(b,'find_edges')
sc.imsave('2.png',255-c)
多次边界检测,然后反色处理:
for i in range(36):
c = sc.imfilter(c,'find_edges')
sc.imsave('2.png',255-c)
多次光滑处理:
smooth
多次锐化处理:
sharpen
反复模糊+锐化:
for i in range(20):
c = sc.imfilter(c,'sharpen')
c = sc.imfilter(c,'blur')
以及
for i in range(50):
c = sc.imfilter(c,'sharpen')
c = sc.imfilter(c,'blur')
下面,第一幅图是反复detail+smooth各500次:
for i in range(500):
c = sc.imfilter(c,'detail')
c = sc.imfilter(c,'smooth')
第二幅是detail 500次:
for i in range(500):
c = sc.imfilter(c,'detail')
第三幅是smooth 500次:
for i in range(500):
c = sc.imfilter(c,'smooth')