如何循环所有图像像素并判断它们是黑色还是白色

Ric*_*nop 4 python python-imaging-library

我有一个简单的黑白唯一的GIF图像(400x400px让我们说).

我需要从该图像中获取所有像素,并查找它们是黑色还是白色.我需要创建一个字典,其中包含有关像素及其颜色的信息.

我对python很新,所以我有点挣扎.但到目前为止,这里是我的脚本:

#!/usr/bin/env python

import os
import Image

os.chdir("D:/python-projects")
aImage = Image.open("input.gif")

aPixelsBlackOrWhiteDictionary = {}
# now I need to fill the dictionary with values such as
# "X,Y": 0
# "X,Y": 1
# where X,Y are coordinates and 0/1 i the pixel color (b/w)
Run Code Online (Sandbox Code Playgroud)

基本上我希望最终字典是这样的:

"0,0" : 0 # pixel with X=0,Y=0 coordinates is black
"1,0" : 1 # pixel with X=1,Y=0 coordinates is White
Run Code Online (Sandbox Code Playgroud)

编辑:

当我尝试:

print aImage[0, 0]
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

Traceback (most recent call last):
  File "D:\python-projects\backprop.py", line 15, in <module>
    print aImage[0, 0]
  File "C:\Python26\lib\site-packages\pil-1.1.7-py2.6-win32.egg\Image.py", line
512, in __getattr__
    raise AttributeError(name)
AttributeError: __getitem__
Run Code Online (Sandbox Code Playgroud)

Bri*_*ian 9

您应该使用getpixel而不是使用索引运算符.请注意,这可能会非常慢.最好使用getdata,它将所有像素作为序列返回.

http://effbot.org/imagingbook/image.htm .


Pau*_*ine 7

尝试:

pix = aImage.load()
print pix[x, y]
Run Code Online (Sandbox Code Playgroud)

另请注意,您可以使用元组作为字典键,您可以使用 mydict[(x, y)] 而不是 mydict["x,y"]。

这个像素信息已经存储在图像中了,为什么还要存储在字典中呢?