本文主要内容
本文可实现图像与xml格式标签同步分割,文中代码参考自网络。裁剪图像部分见上篇文章:基于Python的有重叠区域的批量图像分割
一、代码内容
import cv2
import os
from xml.dom.minidom import Document
import xml.etree.ElementTree as et
category_set = ['airplane', 'airport', 'baseballfield', 'basketballcourt', 'bridge', 'chimney',
'dam', 'Expressway-Service-area', 'Expressway-toll-station', 'golffield',
'groundtrackfield', 'harbor', 'overpass', 'ship', 'stadium', 'storagetank',
'tenniscourt', 'trainstation', 'vehicle', 'windmill']
path = 'images_split/' # 图像数据集的路径
path_txt = 'labels/' # 原数据集标签文件
path_out = 'split_label/' # 切割后数据集的标签文件存放路径
z=800
#size_w=800
ims_list=os.listdir(path) # 所有图像文件名集合
for im_list in ims_list:
img = cv2.imread(path + '/' + im_list)
img_size = img.shape
name_list = []
name = im_list[:-4]
name_list = name.split('_')
#print(name_list)
#print(len(name_list)) # 3
if len(name) < 3:
continue # 结束本次循环
y = int(name_list[1]) #
#print("原点纵轴坐标为:", y)
x = int(name_list[2]) #
#print("原点横轴坐标为:", x)
xmlpath = path_txt + name_list[0] + '.xml'
#print('原xml文件名为:', xmlpath)
xml_outpath = path_out + name + '.xml'
#print('分割后xml文件名为:', xml_outpath)
# 获取原xml文件信息
tree = et.parse(xmlpath)
root = tree.getroot() # 获取根节点
pngname = root.find('filename').text
origin_width = root.find('size').find('width').text
origin_height = root.find('size').find('height'<