Development/Python
[XML] python code로 xml label 수정
shuka
2022. 9. 26. 07:37
728x90
728x90
python code로 xml label값 수정하는 방법
가끔 detection에서 labeling 된 object의 name을 수정하고 싶거나 bounding box 값을 변환하고 싶을 때 labeling tool을 사용하기도 하지만 직접 코드로 원하는 값으로 바꾸고 싶을 때가 있다.
전체 example python code
밑의 코드는 xml로 되어있는 annotation파일에 대해 object의 name을 수정하거나 bounding box 값을 수정할 수 있는 코드이다.
import os
# 라이브러리 호출
import xml.etree.ElementTree as ET
# 변환하고 싶은 xml파일들을 list에 저장
path = 'annotations'
anno_list = [os.path.join(path, x) for x in os.listdir(path)]
anno_list.sort()
for c, anno in enumerate(anno_list):
anno_name = anno.split('/')[-1]
save_anno_path = os.path.join('new_anno', anno_name)
image_name = anno_name.split('.')[0] + '.jpg'
# 해당 xml파일 읽기
xml = open(anno, 'rt', encoding='UTF8')
tree = ET.parse(xml)
root = tree.getroot()
# xml 파일 안에 있는 bounding box 결과 값 수정
for obj in root.iter('object'):
obj.find('name').text = 'food'
obj.find('bndbox')[0].text = 10
obj.find('bndbox')[1].text = 10
obj.find('bndbox')[2].text = 100
obj.find('bndbox')[3].text = 100
# 수정된 정보 xml에 저장
tree.write(save_anno_path)
728x90
반응형