【发布时间】:2021-07-05 03:58:39
【问题描述】:
我有一个形状为 (512, 512, 3) 的 NumPy 数组(即 RGB 图像)。该数组是从二进制掩码创建的,我使用 Pillow 将其读入 3d 数组:
data = np.array(Image.open(mask).convert('RGB'))
我想将蒙版中对象的颜色更改为 RGB 颜色。为此,我需要选择数组中不在所有 3 个维度上的值都为零的所有单元格(即(0,0,0) = black),因为这是背景。
我尝试了以下方法 - 将非黑色单元格着色为绿色 - 没有成功:
data[data[:,:,:] > 0] = (0, 255, 0)
和
data[data[:,:,:] != (0,0,0)] = (0, 255, 0)
得到以下错误(在这两种情况下):
ValueError: NumPy boolean array indexing assignment cannot assign 3 input values to the 8679 output values where the mask is true
如何选择 3d numpy 数组中的所有“黑色”单元格?
这应该不会太难,但我想不通,而且似乎还没有关于 S/O 的类似问题(但如果我错了,请告诉我)。
这是我想要的结果:将灰色蒙版(左)转换为 RGB 颜色蒙版(右)。
【问题讨论】:
-
试试
np.where。 : 当值不全为零时,您想将第二个通道设置为 255? -
是的,虽然不一定是第二个通道:我想为数组中所有非黑色的单元格分配一个 RGB 颜色(绿色只是一个示例)(值为 [0,0 ,0])。