python对图像的基本操作
一、常用的库
二、读取图像及其直方图
直方图原理:图像的直方图用来表征该图像像素值的分布情况。计算图像中的某种信息,例如像素值的多少,然后将数据分为若干个定义好的区间内。
def func1():
im = array(Image.open('D:\python\projects\计算机视觉\image\img1.jpg').convert('L')) # 打开图像,并转成灰度图像
gray() # 设置为灰度
subplot(121)
imshow(im)
subplot(122)
hist(im.flatten(), 128)
title(u'图像直方图', fontproperties=font)
plt.xlim([0, 260]) # 限制x和y
plt.ylim([0, 11000])
show()
三、图像高斯模糊
高斯模糊(高斯滤波):通过二维高斯函数和像素卷积得到模糊后的图像。
def func2():
im = array(Image.open('D:\python\projects\计算机视觉\image\img1.jpg').convert('L')) # 打开图像,并转成灰度图像
gray()
im2 = filters.gaussian_filter(im, 2)
im3 = filters.gaussian_filter(im, 5)
im4 = filters.gaussian_filter(im, 10)
subplot(131)
imshow(im2)
title(u'σ=2', fontproperties=font)
subplot(132)
imshow(im3)
title(u'σ=5', fontproperties=font)
subplot(133)
imshow(im4)
title(u'σ=10', fontproperties=font)
show()
四、图像和直方图均衡化
图像和直方图均衡化的原理可以归纳为将某个灰度映射到另一个灰度。
def func3():
im = array(Image.open('D:\python\projects\计算机视觉\image\img1.jpg').convert('L')) # 打开图像,并转成灰度图像
im2, cdf = imtools.histeq(im)
figure()
subplot(2, 2, 1)
axis('off')
gray()
title(u'原始图像', fontproperties=font)
imshow(im)
subplot(2, 2, 2)
axis('off')
title(u'直方图均衡化后的图像', fontproperties=font)
imshow(im2)
subplot(2, 2, 3)
axis('off')
title(u'原始直方图', fontproperties=font)
# hist(im.flatten(), 128, cumulative=True, normed=True)
hist(im.flatten(), 128)
subplot(2, 2, 4)
axis('off')
title(u'均衡化后的直方图', fontproperties=font)
# hist(im2.flatten(), 128, cumulative=True, normed=True)
hist(im2.flatten(), 128)
show()