资讯详情

dataturks格式转sbd格式

def getbox(cnt):     rect = cv2.minAreaRect(cnt) # 获得最小外部矩形(中心(x,y), (宽,高), 旋转角度)     box = cv2.boxPoints(rect) # 获得最小外部矩形的4个顶点坐标(ps: cv2.boxPoints(rect) for OpenCV 3.x)     # box = np.int(box)     return [int(np.min(box[:,0])),int(np.min(box[:,1])),int(np.max(box[:,0])),int(np.max(box[:,1]))]  imgname = 0 SbdDict = { 
       } ImagesList = [] AnnotationsList = [] imgids = 0 annotationids = 0 imgrootdir = '/home/lhq/segmentation/snake-master/data/sbd/img' with open('ice cream.json') as f:     datas = f.readlines()     for data in datas:         data = data.strip()         Dict = json.loads(data)

        content = Dict['content'].split('___')[-1].split('.')[-1]
        content = str(imgname) + '.' + content
        imgname += 1
        Dict['content'] = content

        imgdict = { 
       }
        imgdict['file_name'] = Dict['content']
        H,W,_ = cv2.imread(os.path.join(imgrootdir,Dict['content'])).shape
        imgdict['height'] = H
        imgdict['width'] = W
        imgdict['id'] = imgids
        ImagesList.append(imgdict)
        annotations = Dict['annotation']
        for annotation in annotations:
            annotationdict = { 
       }
            segmentationlist = []
            points = annotation['points']
            for point in points:
                point[0] = int(point[0] * W)
                point[1] = int(point[1] * H)
                segmentationlist.append(point[0])
                segmentationlist.append(point[1])
            area = cv2.contourArea(np.array(points))
            annotationdict['segmentation'] = [segmentationlist]
            annotationdict['area'] = area
            annotationdict['image_id'] = imgids
            box = getbox(np.array(points))
            annotationdict['bbox'] = box
            annotationdict['iscrowd'] = 0
            annotationdict['id'] = annotationids
            annotationdict['category_id'] = 1
            annotationids += 1
            AnnotationsList.append(annotationdict)
        imgids += 1

with open('/home/lhq/centernettrain/icecream.json') as f:
    datas = f.readlines()
    for data in datas:
        data = data.strip()
        Dict = json.loads(data)

        content = Dict['content'].split('___xgbz_')[-1]
        Dict['content'] = content

        imgdict = { 
       }
        imgdict['file_name'] = Dict['content']
        H,W,_ = cv2.imread(os.path.join(imgrootdir,Dict['content'])).shape
        imgdict['height'] = H
        imgdict['width'] = W
        imgdict['id'] = imgids
        ImagesList.append(imgdict)
        annotations = Dict['annotation']
        for annotation in annotations:
            annotationdict = { 
       }
            segmentationlist = []
            points = annotation['points']
            for point in points:
                point[0] = int(point[0] * W)
                point[1] = int(point[1] * H)
                segmentationlist.append(point[0])
                segmentationlist.append(point[1])
            area = cv2.contourArea(np.array(points))
            annotationdict['segmentation'] = [segmentationlist]
            annotationdict['area'] = area
            annotationdict['image_id'] = imgids
            box = getbox(np.array(points))
            annotationdict['bbox'] = box
            annotationdict['iscrowd'] = 0
            annotationdict['id'] = annotationids
            annotationdict['category_id'] = 1
            annotationids += 1
            AnnotationsList.append(annotationdict)
        imgids += 1

with open('icecream_6_8.json') as f:
    datas = f.readlines()
    for data in datas:
        data = data.strip()
        Dict = json.loads(data)

        content = Dict['content'].split('___dataturks_')[-1]
        Dict['content'] = content

        imgdict = { 
       }
        imgdict['file_name'] = Dict['content']
        H,W,_ = cv2.imread(os.path.join(imgrootdir,Dict['content'])).shape
        imgdict['height'] = H
        imgdict['width'] = W
        imgdict['id'] = imgids
        ImagesList.append(imgdict)
        annotations = Dict['annotation']
        for annotation in annotations:
            annotationdict = { 
       }
            segmentationlist = []
            points = annotation['points']
            for point in points:
                point[0] = int(point[0] * W)
                point[1] = int(point[1] * H)
                segmentationlist.append(point[0])
                segmentationlist.append(point[1])
            area = cv2.contourArea(np.array(points))
            annotationdict['segmentation'] = [segmentationlist]
            annotationdict['area'] = area
            annotationdict['image_id'] = imgids
            box = getbox(np.array(points))
            annotationdict['bbox'] = box
            annotationdict['iscrowd'] = 0
            annotationdict['id'] = annotationids
            annotationdict['category_id'] = 1
            annotationids += 1
            AnnotationsList.append(annotationdict)
        imgids += 1

SbdDict['images'] = ImagesList
SbdDict['annotations'] = AnnotationsList
SbdDict['categories'] = [{ 
       'supercategory': 'none', 'id': 1, 'name': 'icecream'}]
with open('train.json','w') as fw:
    json.dump(SbdDict,fw)

标签: sbd20c200f二极管

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台