我有一张图像,其中包含未知数量的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
答案 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]