在python中通常用PIL来读取图像,但是在PIL中显示图像的方法show是要调用系统的程序来显示图像,因此不太方便。如何不调用系统的程序,而只利用python自己的或插件来显示图像呢?其实在python有几种选择,下面这种可能是比较简单和方便的一种,就是利用matplotlib来进行。例子如下:
import matplotlib.pyplot as plt
img=plt.imread('d:/lena.jpg') #读取图像
用matplotlib的imread方法得到的是一个numpy的array,因此如果想利用矩阵的知识处理图像,此时比较合适,但是如果想利用PIL的方法来处理图像的话,可以通过Image.fromarray方法将图像转换成Image对象;反之,如果想从Image对象转换成numpy矩阵的话,可以用numpy的array方法得到
import matplotlib.pyplot as plt
img=plt.imread('d:/lena.jpg') #读取图像
plt.imshow(img) #显示图像
如果是彩色图像,上面的方法没有任何问题,但是如果是灰度图像,用上面的语句就不能正确显示,主要是没有加调色板,下面是用来显示灰度图像的例子。
import matplotlib.pyplot as plt
import matplotlib.cm as cm
import numpy as np
img=plt.imread('d:/lena1.jpg')
print np.shape(img)
plt.imshow(img,cmap=cm.gray)
用matplotlib的imread方法得到的是一个numpy的array,因此如果想利用矩阵的知识处理图像,此时比较合适,但是如果想利用PIL的方法来处理图像的话,可以通过Image.fromarray方法将图像转换成Image对象;反之,如果想从Image对象转换成numpy矩阵的话,可以用numpy的array方法得到