将图像转换为 numpy 数组,调整其大小以便可以除以 3,但仍然无法屏蔽

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

我在如何屏蔽图像的教程中尝试了这段代码:

def show_mask(mask, ax):
    color = np.array([30/255, 144/255, 255/255, 0.6])
    h, w = np.array(mask).shape[-2:]
    mask_image = np.array(mask).reshape(h, w, -1) * color.reshape(1, 1, -1)
    ax.imshow(mask_image)
    
fig, axes = plt.subplots()
axes.imshow(pic)
show_mask(pix, axes)

它给出了这个错误

ValueError: operands could not be broadcast together
with shapes (1420,3,1080) (1,1,4)

图像和假定的掩模都是 3 维的,因此矩阵乘法(掩模图像)应该是有效的。

数据集中实际上给出了掩码,这与我要做的事情是一样的吗?

之前的错误实际上是因为图像不是 numpy 数组,我已经调整了图像大小并将其转换为 numpy 数组,但问题仍然存在。有什么我错过的吗?

python numpy mask
1个回答
0
投票

我认为你在这里尝试做太多事情,而

mask
的重塑正在破坏一切。据我所知,您不需要重新调整蒙版或
color
数组的形状,因为 NumPy 已经将其广播到像素上。

试试这个:

def show_mask(mask, ax):
    color = np.array([30/255, 144/255, 255/255, 0.6])
    mask_image = mask * color
    ax.imshow(mask_image)
    return
© www.soinside.com 2019 - 2024. All rights reserved.