【发布时间】:2020-06-18 00:15:43
【问题描述】:
给定一个形状为 (8, 24, 3) 的 NumPy 数组,对应于高度为 8 和宽度为 24 的 HSV 图像,我想计算满足某个函数定义的某个谓词的像素数。
通常使用 NumPy 数组,我们可以这样做:
def isSmall(x):
return x < 3
a = np.array([1,2,3,4,5])
isSmall(a)
output: array([ True, True, False, False, False])
什么时候我们可以计算输出中True 值的数量?
我可以对需要三个值的谓词做类似的事情吗?
对应于形状(8, 24, 3)?的数组中的HSV值?
类似这样的:
def isRed(x):
h, s, v = (x[0], x[1], x[2])
return ((170 <= h <= 180 or 0 <= h <= 10) and 100 <= s <= 255)
a = image of shape (8,24,3)
isRed(a)
Desired output: array([[ True, True, ..., False, False],
... , ...
[False, True, ..., False, False]])
然而,这会引发形状错误,因为似乎整个数组都被传递给函数,而不是 NumPy 执行其过滤魔法。
【问题讨论】:
标签: python image numpy filtering vectorization