如何计算png中的黑色像素数



我有一个在线绘制的黑白图,所以像素只有纯黑色或纯白色。这幅画是一个png,我正在python中分析它。

im = Image.open(os.path.join(dir))
im = img_as_float(im)
plt.imshow(im)

有人对如何计算png中黑色像素的数量有建议吗?

计算黑色像素的简单脚本:

def countBlack (image):
blacks = 0
for color in image.flatten():
if color < 0.0001:
blacks += 1
return blacks

假设所有像素都是黑色或白色,这应该有效:

len([px for px in list(im.getdata()) if px[1] < 0.01])

因为它现在是一个numpy数组,所以使用掩码和sum:

nblack = im[np.where(im==0)].sum()
print(nblack)

根据你的问题,这假设是实心黑色。任何其他阈值都是任意的。

如果您使用PIL打开图像,并期望得到纯的单通道灰度图像(而不是彩色图像或淡色调图像(,则应确保这就是您使用获得的图像

# Open image and ensure single channel greyscale image
im = Image.open(...).convert('L') 

此处解释。

然后,您可以使用转换为Numpy数组

na = np.array(im)

现在,Numpy将为您计算白色像素:

white = np.count_nonzero(im)

黑色像素:

black = np.count_nonzero(im==0)

或者,您可以从像素总数中减去白色像素的数量:

black = im.size - white

相关内容

  • 没有找到相关文章

最新更新