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

在python中,如何在只有边框的图像上显示对象的覆盖?,python,matplotlib,image-processing,image-segmentation,Python,Matplotlib,Image Processing,Image Segmentation,我在一篇论文中看到了一个非常好的图像叠加结果的表示,并试图对我的数据进行类似的处理。这里的地面真实是覆盖有红色边界线的对象,分割结果是绿色 我有3张图像:核磁共振成像(MRI)、地面真实度(gt)和从算法获得的结果(res)。我应该如何用python编写类似表示的代码?或者,如果有任何可用的免费代码,请在此处共享。 感谢如果地面真实值和res是2D遮罩,您可以从灰度图像创建RGB图像,并更改res指示的像素颜色。以下是在图像上使用Canny边缘检测器提取的高亮边缘的示例: 谢谢,我现在有三张图

我在一篇论文中看到了一个非常好的图像叠加结果的表示,并试图对我的数据进行类似的处理。这里的地面真实是覆盖有红色边界线的对象,分割结果是绿色

我有3张图像:核磁共振成像(MRI)、地面真实度(gt)和从算法获得的结果(res)。我应该如何用python编写类似表示的代码?或者,如果有任何可用的免费代码,请在此处共享。
感谢如果地面真实值和
res
是2D遮罩,您可以从灰度图像创建RGB图像,并更改
res
指示的像素颜色。以下是在图像上使用Canny边缘检测器提取的高亮边缘的示例:


谢谢,我现在有三张图像,一张灰度MRI图像(384x384),一张gt(384x384x3:红色边界和背景0),还有一张res(384x384x3:蓝色边界和背景0)。如何在一幅图像中覆盖它们?再次感谢
MRI=cv2.merge((MRI,MRI,MRI));MRI[gt[:,:,2]==255]=[0,0255];MRI[rea[:,:,0]==255]=[255,0,0]
当我在做这行时,它只显示MRI,而不是分割结果,gtI也没有
gt
res
,但它可能工作:
MRI=cv2.merge((MRI,MRI,MRI));磁共振成像[res[:,:,2]>0]=[0,0255];MRI[gt[:,:,0]>0]=[255,0,0]
。第一个颜色贴图更正确,但是,当我添加第二个颜色贴图时,前一个颜色贴图消失了。例如,如果我运行
MRI[gt[:,:,2]==255]=[0,0,255]
,然后运行这个
MRI[rea[:,:,0]==255]=[255,0,0]
,它将显示最后一个,而不是两个
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()