我是Stackoverflow的新手,仍在学习python,但我正在尝试开始我的项目。 我计划使用python为图像创建一个过滤器。我想学习的第一步是如何在python中打开一个图像。这就是我到目前为止所做的:
from PIL import Image
im = Image.open('Jordan.jpg')
im.show()
我是否在正确的轨道上?我使用Python 2.7
答案 0 :(得分:1)
对应于图像的最自然的python对象是多维数组;这是最自然的表示,它也是操作图像的最佳数据结构,正如您打算通过创建过滤器那样。
Python有一个数组模块,但是,为了创建和操作多维数组(例如,创建一个过滤器),我强烈建议从提供的链接安装两个python库NumPy和SciPy在这里或 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数组,它将呈现图像