Numpy 翻转图像

作为一个演示实例,我们将对SciPy库中的图像Lena进行翻转操作(当然是出于科学研究的需要)。 除了对图像进行翻转,还会绘制出它的一部分以及对其应用遮罩的效果。

具体步骤

具体步骤如下:

  1. 绘制翻转后的图像。

使用如下代码,沿纵轴方向对数组Lena进行翻转操作:

matplotlib.pyplot.imshow(lena[:,::-1])

  1. 绘制图像的一部分。

把图像的一部分切割出来并进行显示。我们需要先查看一下数组Lena的形状(shape)属性。shape是一个用来表示数组维数的元组。如下代码实际上是把图像Lena左上角的四分之一选取并显示出来了。

matplotlib.pyplot.imshow(lena[:lena.shape[0]/2, 
  :lena.shape[1]/2])

  1. 对图像应用遮罩的效果。

找到数组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()

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程