在Python中显示原始图像像素而不是掩码

3

我是一位有益的助手,可以为您翻译内容。以下是需要翻译的内容:

我有一个深度学习模型,它返回给我一个数组,绘制出来像这样:

res = deeplab_model.predict(np.expand_dims(resized2,0))
labels = np.argmax(res.squeeze(),-1) #remove single dimension values, gives the indices of maximum values in the array  
plt.imshow(labels[:-pad_x])

上面的最后一行代码是用于在绘制图表前删除一些不清晰的数据点。

处理后的图片如下所示:
masked output

原始图片如下:

original image

执行以下操作时...

print(labels[labels>0])
print(labels.shape)
print(len(labels))

我明白了

[12 12 12 ... 12 12 12]
(512, 512)
512

我希望展示原始图像中出现遮罩的彩色像素,并将其他所有内容变为黑色(或模糊或我选择的其他颜色),我该如何做到这一点?


你有什么问题? - U13-Forward
请检查帖子的结束行? - Zubair Ahmed
我仍然不理解。 - U13-Forward
所以你可以看到有一个黄色的狗和猫的掩码,但我需要展示真实的狗和猫,而不是那个黄色。希望这样说得清楚了? - Zubair Ahmed
这是一个深度学习模型,具体细节不重要,只需知道它返回'res'数组。但如果您感兴趣,这是该库的链接:https://github.com/bonlime/keras-deeplab-v3-plus - Zubair Ahmed
显示剩余2条评论
2个回答

0

这里标签数组的工作方式并不完全清楚。假设它包含大于零的值,其中猫和狗所在的位置,您可以使用以下代码创建掩膜图像:

mask = lables > 0
newimage = np.zeros(image.shape)
newimage[mask] = image[mask]

我已根据原始图像创建了一个零图像,并在标签大于零的位置设置了原始像素。


是的,标签数组包含掩码大于0的值。我尝试了你的解决方案newImage = np.zeros(img.shape) newImage[mask] = img[mask]但是我得到了这个错误IndexError: boolean index did not match indexed array along dimension 0; dimension is 358 but corresponding boolean dimension is 512其中img是img = plt.imread("imgs/image2.jpg")当我进行检查时,它们都具有相同的维度print(img.shape, newImage.shape) (358, 500, 3) (358, 500, 3) - Zubair Ahmed
等一下,我实际上是想在原始图像上创建一个掩码,而不是调整大小后的图像,所以尝试了以下代码:newImage = np.zeros(resized2.shape) newImage[mask] = resized2[mask]我得到了这张图片 https://imgur.com/a/Q3eszkJ,并显示以下信息:Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255] for integers) - Zubair Ahmed

0

我成功地反转了这个过程,并实现了自己所想要的结果

mask = labels[:-pad_x] == 0 resizedOrig = cv2.resize(frame, (512,384)) resizedOrig[mask] = 0


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接