擅长:python、mysql、java
<p>我要迟到了,但如果这能帮到别人的话。
我不知道您的代码是否适用于您的应用程序,但是,如果您希望遮罩的每个像素都具有注释类别id的值,那么您不能只添加遮罩,因为有些遮罩会重叠。我用了一个numpy最大值:</p>
<pre><code>cat_ids = coco.getCatIds()
anns_ids = coco.getAnnIds(imgIds=img['id'], catIds=cat_ids, iscrowd=None)
anns = coco.loadAnns(anns_ids)
anns_img = np.zeros((img['height'],img['width']))
for ann in anns:
anns_img = np.maximum(anns_img,coco.annToMask(ann)*ann['category_id'])
</code></pre>
<p>编辑:
下面是我在2017年数据集的图像47112上的代码示例:
<a href="https://i.stack.imgur.com/9yzj3.jpg" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/9yzj3.jpg" alt="Coco2017-47112"/></a>
<a href="https://i.stack.imgur.com/VGaTB.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/VGaTB.png" alt="With the code above"/></a>
灰色阴影的值是数据集描述中描述的类别的id。<br/>
请注意,这里的比萨饼在多边形的边缘与桌子重叠。如果我们加上口罩,重叠部分将被赋予一个id,对应于披萨和桌子类的总和。但是,使用max时,只保留一个类。在这种情况下,由于类表的id大于class pizza的id,因此即使pizza在上面可见,重叠也会影响class表。但我不确定这个问题是否能轻易解决。在</p>