如何在Python中打开图像

时间:2015-01-28 05:51:59

标签: python image python-2.7 python-imaging-library

我是Stackoverflow的新手,仍在学习python,但我正在尝试开始我的项目。 我计划使用python为图像创建一个过滤器。我想学习的第一步是如何在python中打开一个图像。这就是我到目前为止所做的:

from PIL import Image
im = Image.open('Jordan.jpg')
im.show()

我是否在正确的轨道上?我使用Python 2.7

1 个答案:

答案 0 :(得分:1)

对应于图像的最自然的python对象是多维数组;这是最自然的表示,它也是操作图像的最佳数据结构,正如您打算通过创建过滤器那样。

Python有一个数组模块,但是,为了创建和操作多维数组(例如,创建一个过滤器),我强烈建议从提供的链接安装两个python库NumPySciPy在这里或 pip 安装它们:

pip install numpy
pip install scipy


>>> from scipy import misc as MSC
>>> imfile = "~/path/to/an/image.jpg"

在scipy的杂项模块中使用 imread 功能,实际上只是在引擎盖下调用PIL;此函数将读取jpeg以及png图像

>>> img = MSC.imread(imfile)

验证它是否为NumPy数组

>>> isinstance(img, NP.ndarray)
True 

彩色图像有三个轴:X(宽度)Y(高度)和Z(构成RGB元组的三个元素;

前两个轴是图像的像素宽度和高度, 最后一个维度应为'3'(对于具有alpha通道的'png'图像,应为'4')

>>> img.shape
(200, 200, 3)

从图像中心粗略地选择一个像素(单个RGB 3元组)

>>> img[100,100,:]
array([83, 26, 17], dtype=uint8)

如果您调用Matplotlib的 imshow 方法并传入此NumPy数组,它将呈现图像