我在如何屏蔽图像的教程中尝试了这段代码:
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 数组,但问题仍然存在。有什么我错过的吗?
我认为你在这里尝试做太多事情,而
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