본문 바로가기
Development/Python

[XML] python code로 xml label 수정

by shuka 2022. 9. 26.
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
반응형

댓글