PIL的getpixel和getdata的数据不一样?

2024-10-01 13:45:18 发布

您现在位置:Python中文网/ 问答频道 /正文

伙计们。 我使用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))

输出如下:

^{pr2}$

Tags: inimageforrangeopenlistjpgprint
2条回答

混淆是因为getpixel的arg是(x, y)的坐标

  • x=列索引
  • y=行索引。在

也就是说,你应该做getpixel(col, row)

从中,您可以看到im.getdata按列major排序,im.getpixel将是row major。在

>>> 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]

相关问题 更多 >