查找numpy数组中与给定颜色相等的像素数

2024-05-16 11:30:31 发布

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

我一直在四处搜寻,似乎找不到这个问题的答案。假设我有一个给定的RGB值,即(255,0,25)或类似的值

我有一个称为“img”的形状(高度,宽度,3)的数组。现在,我想找到这个数组中与我的颜色相等的像素数。我想做什么

(img==(255,0,25)).sum()可以,但即使我的图像是一个只包含颜色(255,0,25)的图像,我也会进行过度计数,当r=255,0或25,当g=255,0或25,当b=255,0或25时,这似乎是求和

我一直在搜索numpy文档,但我找不到一种方法来比较像素级和元素级。有什么想法吗


Tags: 答案文档图像numpyimg宽度高度颜色
1条回答
网友
1楼 · 发布于 2024-05-16 11:30:31

它分别比较RGB中的每个值,因此每个像素都给出元组(True, True, True),您必须使用.all(axis=...)(True, True, True)转换为True

对于3D数组(y,x,RGB),您必须使用.all(axis=2)或更通用的.all(axis=-1),正如@QuangHoang在注释中所注意到的那样

print( (img == (255,0,25)).all(axis=-1).sum() )

import numpy as np

img = np.array([[(255,0,25) for x in range(3)] for x in range(3)])
#print(img)

print( (img == (255,0,25)).all(axis=-1).sum() )  # 9

img[1][1] = (0,0,0)
img[1][2] = (0,0,0)
#print(img)

print( (img == (255,0,25)).all(axis=-1).sum() )  # 7

相关问题 更多 >