先看看代码
def show_anns(anns): if len(anns) == 0: #anns是个mask列表,里面包含很多mask,每个mask又是一个dict,里面有segmentation,area等 return sorted_anns = sorted(anns, key=(lambda x: x['area']), reverse=True) # 根据area排序 ax = plt.gca() # 此时的plt已经将原图作为背景图了 ax.set_autoscale_on(False) # 取消自动缩放 img = np.ones((sorted_anns[0]['segmentation'].shape[0], sorted_anns[0]['segmentation'].shape[1], 4)) #弄个画布,元素都是1,四个通道,rgb和透明度 img[:,:,3] = 0 # 最后一个透明度设为0,先不显示 for ann in sorted_anns: # 先遍历每个mask m = ann['segmentation'] #取每个分割结果 color_mask = np.concatenate([np.random.random(3), [0.35]]) # 为每个maks设置显示颜色,np.random.random(3)表示随机rgb,0.35表示透明度 img[m] = color_mask # 被分割的每个点都设置为color_mask ax.imshow(img) # 在背景图的基础上直接覆盖分割图
注:ann['segmentation']表示分割的结果,一个二维数据,尺寸为图像的w×h,被分割的位置使用True表示,未被分割的位置使用False表示,所以表现为[[False, False,False,...],[False,False,False,...],...]
标签:segmentation,False,sam,mask,random,anns,图像,sorted From: https://www.cnblogs.com/chentiao/p/17565845.html