来自PIL的getpixel&的数据getdata不一样吗?

时间:2012-05-14 07:55:21

标签: python python-imaging-library

专家。 我用getpixel& getdata从同一张图片中检索数据。但是有些点不同。 为什么呢?

im = Image.open("cljr.jpg") 
t=list(im.getdata())
for i in range(10):
    print "%d %x %x %x"%(i,t[i][0],t[i][1],t[i][2])

print '' 

print "%x %x %x"% im.getpixel((0,7))
print "%x %x %x"% im.getpixel((0,8))

这是输出:

0 ec f7 f9
1 ec f7 f9
2 ec f7 f9
3 ec f7 f9
4 ec f7 f9
5 ec f7 f9
6 ec f7 f9
7 ec f7 f9
8 eb f6 f8
9 eb f6 f8

ec f7 f9
ed f8 fa

2 个答案:

答案 0 :(得分:2)

通过此,您可以看到im.getdata按列主要排序,而im.getpixel将排成行。

>>> import Image
>>> import numpy as np
>>> x = np.array([[1., 2.], [3., 4.]])
>>> im = Image.fromarray(x)
>>> list(im.getdata())
[1.0, 2.0, 3.0, 4.0]
>>> [im.getpixel(x) for x in [(0,0), (0,1), (1,0), (1,1)]]
[1.0, 3.0, 2.0, 4.0]

答案 1 :(得分:1)

由于getpixel的arg是坐标(x, y)

这一事实引起了混淆。
  • x =列索引
  • y =行索引。

即。你应该做getpixel(col, row)