label2COCO(area).py

本文介绍了如何从labelme的json文件计算mask的面积,包括根据points生成mask,确定检测框位置,计算每行像素构成的梯形面积,并对所有行进行求和,以得到完整的mask面积计算过程。
摘要由CSDN通过智能技术生成

网上找到的都是要积分下载,自己尝试着补充了下area计算,不一定正确..

mask面积计算:

1.根据labelme生成的json文件里的points来生成mask

2.确定目标检测框的位置(左上角位置,右下角位置)

3.依次计算mask中一行像素与下一行像素组成的梯形的面积,由于mask一定是连续的,所以梯形的边长可以通过遍历当前行像素的值来求(像素为1表示属于mask),最后对每一行求和.

 

完整代码如下(除了relArea其他是照搬的) 

 

# -*- coding:utf-8 -*-
# !/usr/bin/env python

import argparse
import json
import matplotlib.pyplot as plt
import skimage.io as io
import cv2
from labelme import utils
import numpy as np
import glob
import PIL.Image
class labelme2coco(object):
	def __init__(self,labelme_json=[],save_json_path='./new.json'):
		'''
		:param labelme_json: 所有labelme的json文件路径组成的列表
		:param save_json_path: json保存位置
		'''
		self.labelme_json=labelme_json
		self.save_json_path=save_json_path
		self.images=[]
		self.categories=[]
		self.annotations=[]
		# self.data_coco = {}
		self.label=[]
		self.annID=1
		self.height=0
		self.width=0

		self.save_json()

	def data_transfer(self):
		for num,json_file in enumerate(self.labelme_json):
			with open(json_file,'r') as fp:
				data = json.load(fp)  # 加载json文件
				self.images.append(self.image(data,num))
				
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值