所以我一直在用这个代码,。我试图从COCO数据集生成图像的原始掩码。在
dataDir='G:'
dataType='train2014'
annFile='{}/annotations/instances_{}.json'.format(dataDir,dataType)
coco=COCO(annFile)
annFile = '{}/annotations/person_keypoints_{}.json'.format(dataDir,dataType)
coco_kps=COCO(annFile)
catIds = coco.getCatIds(catNms=['person'])
imgIds = coco.getImgIds(catIds=catIds );
imgIds = coco.getImgIds(imgIds = imgIds[0])
img = coco.loadImgs(imgIds[np.random.randint(0,len(imgIds))])[0]
I = io.imread('G:/train2014/'+img['file_name'])
plt.imshow(I); plt.axis('off')
annIds = coco.getAnnIds(imgIds=img['id'], catIds=catIds, iscrowd=None)
anns = coco.loadAnns(annIds)
coco.showAnns(anns)
但我得到的是这样的东西
但我想要的是这样的东西
如何针对每个图像获取原始蒙版?在
不熟悉COCO,但我看到有一个^{} 函数,它应该为每个注释生成一个二进制掩码。在
因此,在未经测试的伪代码中,假设掩码不重叠,您应该有如下内容:
我要迟到了,但如果这能帮到别人的话。 我不知道您的代码是否适用于您的应用程序,但是,如果您希望遮罩的每个像素都具有注释类别id的值,那么您不能只添加遮罩,因为有些遮罩会重叠。我用了一个numpy最大值:
编辑: 下面是我在2017年数据集的图像47112上的代码示例: 灰色阴影的值是数据集描述中描述的类别的id。
请注意,这里的比萨饼在多边形的边缘与桌子重叠。如果我们加上口罩,重叠部分将被赋予一个id,对应于披萨和桌子类的总和。但是,使用max时,只保留一个类。在这种情况下,由于类表的id大于class pizza的id,因此即使pizza在上面可见,重叠也会影响class表。但我不确定这个问题是否能轻易解决。在
根据菲利波先生的直觉,我能够做出正确的代码,如下所示。在
相关问题 更多 >
编程相关推荐