数据要素产业
使用python+numpy+scipy进行图像处理实战
以前照相没有像现在这样那么容易的,而在现在你只需要一部手机,就可以免费拍照,而在上一代人之前,业余艺术家和真正的艺术家拍照的费用非常昂贵,并且每张照片的成本也不是免费的。
我们拍照是为了及时地保存美好的瞬间,被保存的记忆可以随时在未来被"打开"。这个过程就像腌制东西一样,所以我们要注意正确的防腐剂。虽然现在手机为我们提供了一系列的图像处理软件,但是如果我们需要处理大量的照片时,我们就需要其他的工具了,此时编程和Python就派上用场了。Python及其模块如Numpy、Scipy、Matplotlib和其他特殊模块提供了各种各样的函数,能够处理大量图片。为了向你介绍必要的知识,本文Python教程将教你如何进行基本的图像处理和操作,为此我们使用模块NumPy、Matplotlib和SciPy。我们从scipy包的misc工具开始。# 以下行仅在Python notebook中需要加上:
%matplotlib inline
from scipy import misc
ascent = misc.ascent()
import matplotlib.pyplot as plt
plt.gray()
plt.imshow(ascent)
plt.show()
除了显示图像之外,我们还可以看到带有刻度的轴。如果你需要一些关于大小和像素位置的方向时,这是很有用的,但在大多数情况下,你并不需要这些信息,则我们可以通过添加命令plt.axis("off")来去掉刻度和轴:from scipy import misc
ascent = misc.ascent()
import matplotlib.pyplot as plt
plt.axis("off") # 删除轴和刻度
plt.gray()
plt.imshow(ascent)
plt.show()
我们可以看到这个图像的类型是一个整数数组:ascent.dtype
输出:dtype('int64')我们也可以检查图像的大小:ascent.shape
输出:(512,512)misc包里还有一张浣熊的图片:import scipy.misc
face = scipy.misc.face()
print(face.shape)
print(face.max)
print(face.dtype)
plt.axis("off")
plt.gray()
plt.imshow(face)
plt.show()
(768, 1024, 3)