Python NumPy条件以获取最大(R,G,B)>;门槛

Python NumPy条件以获取最大(R,G,B)>;门槛,python,numpy,opencv,image-processing,Python,Numpy,Opencv,Image Processing,我想制作一个面具,它有一个对应于图像中某些细胞的面具。这些单元格应至少有一个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 这会产生一个错误: 发生值错

我想制作一个面具,它有一个对应于图像中某些细胞的面具。这些单元格应至少有一个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
这会产生一个错误:

发生值错误 Message=包含多个元素的数组的真值不明确。使用a.any()或a.all()


由于您的图像是一个3D阵列
(h,w,3)
,只需取最后一个轴的最大值即可获得
最大值(R,G,B)

np.max(image, axis=-1)
将返回值与
threshold
进行比较,得到一个
bool
数组。将其转换为
int
以获得0和1的掩码:

mask = (np.max(image, axis=-1) > threshold).astype(int)

由于您的图像是一个3D阵列
(h,w,3)
,只需取最后一个轴的最大值即可获得
最大值(R,G,B)

np.max(image, axis=-1)
将返回值与
threshold
进行比较,得到一个
bool
数组。将其转换为
int
以获得0和1的掩码:

mask = (np.max(image, axis=-1) > threshold).astype(int)