如何在python中仅带有边框的图像上显示对象的覆盖图?

时间:2019-07-09 08:26:07

标签: python matplotlib image-processing image-segmentation

我看到了非常好的表示,将结果叠加在纸上的图像上,并尝试对数据进行类似的处理。在这里,地面真相是覆盖有红色边界线的物体,而分割结果是带有绿色的物体。

enter image description here 我有3张图片:MRI,地面真理(gt)和从算法获得的结果(res)。我应该如何在python中为这种相似的表示形式编写代码?或者,如果有任何免费代码可供使用,请在此处共享。 谢谢

1 个答案:

答案 0 :(得分:3)

如果地面真相和res是2D遮罩,则可以从灰度图像创建RGB图像,并更改res指示的像素颜色。这是在sample图像上突出显示使用Canny边缘检测器提取的边缘的示例:

import cv2
from matplotlib import pyplot as plt

img = cv2.imread('brain.png',0)
edges = cv2.Canny(img,50,200)   # canny edge detector

img = cv2.merge((img,img,img))  # creat RGB image from grayscale
img2 = img.copy()
img2[edges == 255] = [255, 0, 0]  # turn edges to red

plt.subplot(121),plt.imshow(img)
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(img2)
plt.title('Edge Highlighted'), plt.xticks([]), plt.yticks([])

plt.show()

result