NumPy在哪里获得具有max(R,G,B)的单元格的条件>阈值

问题描述 投票:0回答:1

我想制作一个具有与图像中某些单元格相对应的蒙版的面具。这些单元格的RGB颜色值中的至少一个应大于阈值。这是我的代码不起作用:

B = image[0:h,0:w,0].astype(int)
G = image[0:h,0:w,1].astype(int)
R = image[0:h,0:w,2].astype(int)
mask = np.zeros((h,w))

mask[np.where( max(R,G,B) > threshold )] = 1

这给出了一个错误:

发生ValueError Message =具有多个元素的数组的真值是不明确的。使用a.any()或a.all()

python numpy opencv image-processing
1个回答
2
投票

由于你的图像是一个三维数组(h, w, 3),你可以通过简单地取最后一个轴得到max(R, G, B)

np.max(image, axis=-1)

将返回的值与threshold进行比较,得到一个bool数组。把它扔到int得到一个零和一个掩码:

mask = (np.max(image, axis=-1) > threshold).astype(int)
© www.soinside.com 2019 - 2024. All rights reserved.