1. 删除xml中指定标签
import os
import xml.etree.ElementTree as ET
origin_ann_dir = '/app/yyq/dataset/second_project/error_dataset2021/Annotations/'
new_ann_dir = '/app/yyq/dataset/second_project/error_dataset2021/Annotations-new/'
if not os.path.exists(new_ann_dir):
os.makedirs(new_ann_dir)
k = 0
for dirpaths, dirnames, filenames in os.walk(origin_ann_dir):
for filename in filenames:
print("process...")
k = k + 1
print(k)
if os.path.isfile(r'%s%s' % (origin_ann_dir, filename)):
origin_ann_path = os.path.join(r'%s%s' % (origin_ann_dir, filename))
new_ann_path = os.path.join(r'%s%s' % (new_ann_dir, filename))
tree = ET.parse(origin_ann_path)
root = tree.getroot()
for object in root.findall('object'):
name = str(object.find('name').text)
if (name in ["Electromobile"]):
root.remove(object)
if (name in ["Bicycle"]):
root.remove(object)
if (name in ["vehicle"]):
root.remove(object)
tree.write(new_ann_path)
2. 判断xml中标签是否为空,并移动xml和相应图片到指定路径
import os
import xml.etree.ElementTree as ET
import shutil
origin_ann_dir = '/app/yyq/dataset/second_project/error_dataset2021/Annotations/'
new_ann_dir = '/app/yyq/dataset/second_project/error_dataset2021/Annotations-new/'
origin_pic_dir = '/app/yyq/dataset/second_project/error_dataset2021/JPEGImages/'
new_pic_dir = '/app/yyq/dataset/second_project/error_dataset2021/JPEGImages-new'
if not os.path.exists(new_ann_dir):
os.makedirs(new_ann_dir)
if not os.path.exists(new_pic_dir):
os.makedirs(new_pic_dir)
k = 0
p = 0
q = 0
for dirpaths, dirnames, filenames in os.walk(origin_ann_dir):
for filename in filenames:
print("process...")
k = k + 1
print(k)
if os.path.isfile(r'%s%s' % (origin_ann_dir, filename)):
origin_ann_path = os.path.join(r'%s%s' % (origin_ann_dir, filename))
new_ann_path = os.path.join(r'%s%s' % (new_ann_dir, filename))
tree = ET.parse(origin_ann_path)
root = tree.getroot()
if len(root.findall('object')):
p = p + 1
else:
print(filename)
old_xml = origin_ann_dir + filename
new_xml = new_ann_dir + filename
old_pic = origin_pic_dir + filename.replace("xml", "jpg")
new_pic = new_pic_dir + filename.replace("xml", "jpg")
q = q + 1
shutil.move(old_pic, new_pic)
shutil.move(old_xml, new_xml)
print("ok, ", p)
print("empty, ", q)
3. 修改xml中指定标签
import os
import xml.etree.ElementTree as ET
origin_ann_dir = '/app/yyq/dataset/third_project/fivechaos_dataset2021/Annotations/'
new_ann_dir = '/app/yyq/dataset/third_project/fivechaos_dataset2021/Annotations-new/'
if not os.path.exists(new_ann_dir):
os.makedirs(new_ann_dir)
k = 0
for dirpaths, dirnames, filenames in os.walk(origin_ann_dir):
for filename in filenames:
print("process...")
k = k + 1
print(k)
if os.path.isfile(r'%s%s' % (origin_ann_dir, filename)):
origin_ann_path = os.path.join(r'%s%s' % (origin_ann_dir, filename))
new_ann_path = os.path.join(r'%s%s' % (new_ann_dir, filename))
tree = ET.parse(origin_ann_path)
root = tree.getroot()
for object in root.findall('object'):
name = str(object.find('name').text)
if (name in ["non_vehicle_parking"]):
object.find('name').text = "parking"
tree.write(new_ann_path)