python - 查找numpy数组中等于给定颜色的像素数
问题描述
我一直在四处搜寻,似乎无法找到这个问题的答案。假设我有一个给定的 RGB 值,即 (255,0,25) 或类似的值。
我有一个名为'img'的ndarray(高度,宽度,3)。现在,我想找到这个数组中与我的颜色相等的像素数。我以为做
(img==(255,0,25)).sum()
会起作用,但即使我的图像仅由颜色 (255,0,25) 组成,我也会多算,而且当 r=255、0 或 25 以及 g=255 时,这似乎是总和, 0 或 25,当 b=255,0 或 25 时。
我一直在搜索 numpy 文档,但我找不到一种方法来比较像素,而不是元素。有任何想法吗?
解决方案
它分别比较每个值,RGB
因此每个像素都给出元组(True, True, True)
,您必须转换(True, True, True)
为True
使用.all(axis=...)
对于 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
推荐阅读
- node.js - 如何包含节点二进制 npm 的路径
- python - Pandas read_html 获取 href 而不是仅针对一列的文本
- bootstrap-4 - 单击 Bootstrap 4 列表组面板父项时将 URL 片段附加到 URL
- c# - 使用 LinqPad 将 Linq 转换为 Lambda
- excel - 如何将数据复制到空白行,然后在 Excel 中删除原始数据
- python - 使用matplotlib保存灰度图像,加载时有多个通道
- react-native - 堆栈导航器可以在反应导航中有 2 条不同的路线吗
- php - 无法使用 PHP 找出程序 MySQL Prepared Statement 错误
- url-rewriting - 如何在 web.config 中将非 www http 重定向到 https www
- javascript - this.props.fb 不是函数