作为一个演示实例,我们将对SciPy库中的图像Lena进行翻转操作(当然是出于科学研究的需要)。 除了对图像进行翻转,还会绘制出它的一部分以及对其应用遮罩的效果。
具体步骤
具体步骤如下:
- 绘制翻转后的图像。
使用如下代码,沿纵轴方向对数组Lena
进行翻转操作:
matplotlib.pyplot.imshow(lena[:,::-1])
- 绘制图像的一部分。
把图像的一部分切割出来并进行显示。我们需要先查看一下数组Lena
的形状(shape)属性。shape是一个用来表示数组维数的元组。如下代码实际上是把图像Lena左上角的四分之一选取并显示出来了。
matplotlib.pyplot.imshow(lena[:lena.shape[0]/2,
:lena.shape[1]/2])
- 对图像应用遮罩的效果。
找到数组Lena
中所有的偶数并把它们置零(这只是出于演示目的随意选定的标准),这样就实现了对图像的遮罩效果。获得数组的一个副本,并把其中的偶数置零,其效果相当于在图像上画了很多蓝色的点(如果你看到的是黑白图像,那只能看到黑点)。
mask = lena % 2 == 0
masked_lena = lena.copy()
masked_lena[mask] = 0
所有这些操作的结果是生成一个2×2的图像网格,如下图所示。
本章的完整代码如下。
import scipy.misc
import matplotlib.pyplot
# 加载数组Lena
lena = scipy.misc.lena()
# 绘制数组Lena
matplotlib.pyplot.subplot(221)
matplotlib.pyplot.imshow(lena)
# 绘制翻转后的数组
matplotlib.pyplot.subplot(222)
matplotlib.pyplot.imshow(lena[:,::-1])
# 绘制数组的一部分
matplotlib.pyplot.subplot(223)
matplotlib.pyplot.imshow(lena[:lena.shape[0]/2,:lena.shape[1]/2])
# 应用遮罩的效果
mask = lena % 2 == 0
masked_lena = lena.copy()
masked_lena[mask] = 0
matplotlib.pyplot.subplot(224)
matplotlib.pyplot.imshow(masked_lena)
matplotlib.pyplot.show()