有没有一种更Python的方法来查找图像中像素列表的末尾

时间:2019-06-06 09:07:02

标签: python-3.x python-imaging-library

我有一张图像,其中包含未知数量的RGBA值彩色像素。我需要找到像素数据不是(0,0,0,0)的像素的末端。

我用一个很长的循环来解决它,我想知道是否可以用更pythonic的方式来做得更短和更快? (我使用PIL图片库顺便说一句)

breed [collectors collector]
breed [red-bees red-bee]

to setup
  clear-all
  create-collectors 10
  ask collectors [
    hatch-red-bees 1
  ]
  print count red-bees
end

1 个答案:

答案 0 :(得分:1)

您可以将PIL图像转换为Numpy数组:

im = Image.open('input.png').convert('RGBA')
nim = np.array(im)

然后使用它来获取任何非零值的x,y坐标:

np.nonzero(np.any(nim,axis=2))

这将为您提供2个数组(所有X坐标之一和所有Y数组之一),因此您可能希望像这样获得每个数组的第一个元素:

Xs, Ys = np.nonzero(np.any(nim,axis=2)) 
x = Xs[0]
y = Ys[0]