import os import cv2 import xml.dom.minidom from tqdm import tqdm from lxml import etree from creat_xml import GEN_Annotations xml_path = "/data/DataManagement/Project/CAS_ProjectBird/CDB_ProjectBird/Annotations" image_path = xml_path.replace("/Annotations","/JPEGImages") for xmls in tqdm(os.listdir(xml_path)): anno = GEN_Annotations(xmls.replace(".xml",".jpg")) dom = xml.dom.minidom.parse(os.path.join(xml_path,xmls)) try: size = dom.getElementsByTagName("size") #print(size[0].getElementsByTagName('width')[0].childNodes[0].data) width = size[0].getElementsByTagName('width')[0].childNodes[0].data height = size[0].getElementsByTagName('height')[0].childNodes[0].data depth = size[0].getElementsByTagName('depth')[0].childNodes[0].data except: print(xmls) image = cv2.imread(os.path.join(image_path,xmls.replace(".xml",".jpg"))) width = image.shape[1] height = image.shape[0] depth = image.shape[2] anno.set_size(int(width), int(height), int(depth)) objects = dom.getElementsByTagName("object") for object in objects: bndbox = object.getElementsByTagName('bndbox')[0] xmin = bndbox.getElementsByTagName('xmin')[0] ymin = bndbox.getElementsByTagName('ymin')[0] xmax = bndbox.getElementsByTagName('xmax')[0] ymax = bndbox.getElementsByTagName('ymax')[0] xmin_data = int(xmin.childNodes[0].data) ymin_data = int(ymin.childNodes[0].data) xmax_data = int(xmax.childNodes[0].data) ymax_data = int(ymax.childNodes[0].data) label_name = object.getElementsByTagName('name')[0].childNodes[0].data anno.add_pic_attr(label=label_name,xmin=xmin_data,xmax=xmax_data,ymin=ymin_data,ymax=ymax_data) anno.savefile(os.path.join(xml_path,xmls).replace("/Annotations/","/Annotations_temp/"))