文章目录
VOC目标检测格式的标注文件有时候需要进行修改,以下为一个简单的修改代码。从原图中扣一部分出来,这样原来的标注框需要更新到新的坐标系。图片大概是如下,我们只要中间一部分:
import xml.etree.ElementTree as ET
import os
import numpyas np
tree = ET.parse('test\img.xml')
root =tree.getroot()
filename = root.find('filename').text
#change filename
root.find('filename').text = os.path.splitext(filename)[0]+'.jpg'
size = root.find('size')
w = int(size.find('width').text)
h = int(size.find('height').text)
#change size
size.find('width').text ="884"
objs = root.findall('object')
for obj in objs:
cls_name = obj.find('name').text.lower()
if cls_name != 'screen':
root.remove(obj)
else:
xmlbox = obj.find('bndbox')
b = (float(xmlbox.find('xmin').text), float(xmlbox.find('xmax').text), float(xmlbox.find('ymin').text), float(xmlbox.find('ymax').text)) #左,右,上,下
#change
new_xmin=int(np.clip(b[0]-518,0,884))
new_xmax = int(np.clip(b[1]-518,0,884))
xmlbox.find('xmin').text=str(new_xmin)
xmlbox.find('xmax').text=str(new_xmax)
print(root.findall('object'))
new_tree = ET.ElementTree(root)
new_tree.write('t.xml',encoding='utf-8')