计算前景区域比例

def compute():
    with open('instances_train2019.json') as fid:
        data = json.load(fid)
    images = {}
    for x in data['images']:
        images[x['id']] = x

    annotations = {}
    for x in data['annotations']:
        annotations[images[x['image_id']]['file_name']] = x

    object_paths = glob.glob(os.path.join('', '*.jpg'))

    object_category_paths = defaultdict(list)
    for path in object_paths:
        name = os.path.basename(path)
        category = annotations[name]['category_id']
        object_category_paths[category].append(path)#每一个种类有很多图片

    object_category_paths = dict(object_category_paths)

    ratio_anns = {}
    for category, paths in tqdm(object_category_paths.items()):#每一个种类有很多图片
        areas = []
        for object_path in paths:
            name = os.path.basename(object_path)
            mask_path = os.path.join('', '{}.png'.format(name.split('.')[0]))
            mask = Image.open(mask_path).convert('L')
            area = np.array(mask, dtype=np.bool).sum()###二值图,白色为1,黑色为0
            areas.append(area)
        areas = np.array(areas)
        max_area = areas.max()
        ratios = np.round(areas / max_area, 3)
        for i, object_path in enumerate(paths):
            name = os.path.basename(object_path)
            ratio_anns[name] = ratios[i]
    with open('ratio_annotations.json', 'w') as fid:
        json.dump(ratio_anns, fid)


if __name__ == '__main__':
    compute()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 如果你想要设置一个比 `div` 区域宽一点的背景,你可以使用 CSS 背景属性。 首先,你需要给 `div` 元素设置一个 ID,这样才能使用 CSS 选择器来为其设置样式。 例如,如果你要给 `div` 元素设置 ID 为 `myDiv`,你可以这样写: ```html <div id="myDiv">这是一个 div 元素</div> ``` 然后,你可以使用 CSS 背景属性来为这个 `div` 元素设置背景。 例如,如果你想设置一个红色的背景,你可以在 CSS 样式表中添加如下代码: ```css #myDiv { background-color: red; } ``` 如果你想要让背景图片比 `div` 元素宽一点,你可以使用 `background-size` 属性来调整背景图片的大小。例如,如果你想让背景图片宽度比 `div` 元素宽 100 像素,你可以这样写: ```css #myDiv { background-image: url(my-image.jpg); background-size: 100px auto; } ``` 这样,背景图片的宽度就会比 `div` 元素宽 100 像素,而高度会自动调整以保持图片的原始比例。 希望这些信息对你有帮助! ### 回答2: 要设置一个比div区域宽一点的背景,可以使用以下方法: 首先,确保div区域设置了适当的宽度。可以使用CSS的width属性来设置div的宽度,例如:width: 500px。 然后,创建一个背景容器,使其宽度比div区域稍宽一点。可以在div的外部创建一个新的div元素,作为背景容器。可以使用CSS的width属性设置背景容器的宽度,例如:width: 520px。 接下来,设置背景容器的背景样式。可以使用CSS的background属性设置背景容器的背景颜色、图片或其他样式。例如,可以设置背景颜色为蓝色,并使其填满整个背景容器,可以使用以下CSS代码:background: blue;。 最后,将div区域放置在背景容器中。可以使用CSS的position和z-index属性来将div置于背景容器的前景。例如,可以设置div的position为relative,并将其z-index设为较大的值,以确保div位于背景容器之上。 总结起来,要设置一个比div区域宽一点的背景,需要设置div的宽度,创建一个背景容器,设置背景容器的宽度和背景样式,最后将div置于背景容器之上。这样就可以实现一个稍宽于div区域的背景效果。 ### 回答3: 要在比div区域宽一点的背景中设置样式,可以通过CSS来实现。 首先,在HTML文件中创建一个div元素,并为其添加一个唯一的id属性,以便在CSS中引用。 ```html <div id="container"> 这是一个div区域 </div> ``` 接下来,在CSS文件中,可以使用背景属性来设置div元素的背景样式。我们需要将背景宽度设置为比div区域宽一点,可以使用calc()函数来计算。 ```css #container { width: 200px; /* 设置div区域的宽度 */ padding: 10px; /* 可选,设置内边距使内容与背景之间有一定的间距 */ background-color: red; /* 设置背景颜色 */ background-size: calc(100% + 20px) calc(100% + 20px); /* 设置背景宽度比div区域宽一点 */ background-position: -10px -10px; /* 可选,根据内边距调整背景位置 */ } ``` 在上面的代码中,我们将div的宽度设置为200px,然后使用padding属性设置了内边距,这样内容与背景之间会有一定的间距。然后,通过设置背景颜色为红色,并使用background-size属性来计算背景宽度比div区域宽一点,并使用background-position属性来调整背景位置。 通过以上设置,我们可以在div区域周围设置比它宽一点的红色背景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值