40 lines
1.8 KiB
Python
Executable File
40 lines
1.8 KiB
Python
Executable File
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/")) |