mirror of https://github.com/RE-OWOD/RE-OWOD
41 lines
2.0 KiB
Python
41 lines
2.0 KiB
Python
|
import xml.etree.cElementTree as ET
|
||
|
import os
|
||
|
|
||
|
from pycocotools.coco import COCO
|
||
|
|
||
|
|
||
|
def coco_to_voc_detection(coco_annotation_file, target_folder):
|
||
|
os.makedirs(os.path.join(target_folder, 'Annotations'), exist_ok=True)
|
||
|
coco_instance = COCO(coco_annotation_file)
|
||
|
for index, image_id in enumerate(coco_instance.imgToAnns):
|
||
|
image_details = coco_instance.imgs[image_id]
|
||
|
annotation_el = ET.Element('annotation')
|
||
|
ET.SubElement(annotation_el, 'filename').text = image_details['file_name']
|
||
|
|
||
|
size_el = ET.SubElement(annotation_el, 'size')
|
||
|
ET.SubElement(size_el, 'width').text = str(image_details['width'])
|
||
|
ET.SubElement(size_el, 'height').text = str(image_details['height'])
|
||
|
ET.SubElement(size_el, 'depth').text = str(3)
|
||
|
|
||
|
for annotation in coco_instance.imgToAnns[image_id]:
|
||
|
object_el = ET.SubElement(annotation_el, 'object')
|
||
|
ET.SubElement(object_el,'name').text = coco_instance.cats[annotation['category_id']]['name']
|
||
|
# ET.SubElement(object_el, 'name').text = 'unknown'
|
||
|
ET.SubElement(object_el, 'difficult').text = '0'
|
||
|
bb_el = ET.SubElement(object_el, 'bndbox')
|
||
|
ET.SubElement(bb_el, 'xmin').text = str(int(annotation['bbox'][0] + 1.0))
|
||
|
ET.SubElement(bb_el, 'ymin').text = str(int(annotation['bbox'][1] + 1.0))
|
||
|
ET.SubElement(bb_el, 'xmax').text = str(int(annotation['bbox'][0] + annotation['bbox'][2] + 1.0))
|
||
|
ET.SubElement(bb_el, 'ymax').text = str(int(annotation['bbox'][1] + annotation['bbox'][3] + 1.0))
|
||
|
|
||
|
ET.ElementTree(annotation_el).write(os.path.join(target_folder, 'Annotations', image_details['file_name'].split('.')[0] + '.xml'))
|
||
|
if index % 10000 == 0:
|
||
|
print('Processed ' + str(index) + ' images.')
|
||
|
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
coco_annotation_file = '/home/fk1/workspace/datasets/annotations/instances_val2017.json'
|
||
|
target_folder = '/home/fk1/workspace/OWOD/datasets/coco17_voc_style'
|
||
|
|
||
|
coco_to_voc_detection(coco_annotation_file, target_folder)
|