coco格式数据集中area的计算

假如你有RLE的分割标注,如下图

要计算annotation中的area

coco的api可以计算,但官方给出的例程,完全是坑,会让你怀疑人生。

把segmentation放进pycocotools.mask.area,会出各种各样的错误。后来才在其他工具包里看到,要先将上面的segmentation编码,在放进area函数里面计算。代码如下

import pycocotools.mask as maskUtils

def annToRLE(ann, i_w, i_h):
    h, w = i_h, i_w
    segm = ann['segmentation']
    if type(segm) == list:
        # polygon -- a single object might consist of multiple parts
        # we merge all parts into one mask rle code
        rles = maskUtils.frPyObjects(segm, h, w)
        rle = maskUtils.merge(rles)
    elif type(segm['counts']) == list:
        # uncompressed RLE
        rle = maskUtils.frPyObjects(segm, h, w)
    else:
        # rle
        rle = ann['segmentation']
    return rle
rle = annToRLE(ann, segmentation['size'][0], segmentation['size'][1])
area = float(maskUtils.area(rle))

 

工具来自:https://tianchi.aliyun.com/competition/entrance/231787/information

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值