1 Star 0 Fork 0

ferry / run_network

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
txt2xml.py 5.59 KB
一键复制 编辑 原始数据 按行查看 历史
ferry 提交于 2023-04-28 13:37 . first commit
from xml.dom.minidom import Document
import os
import cv2
# 'person', 'head', 'helmet'
def makexml(txtPath, xmlPath, picPath): # 读取txt路径,xml保存路径,数据集图片所在路径
dict = {'0': "person", # 字典对类型进行转换
'1': "head",
'2': "helmet",
'3': "child",
'4': "babycarriage",
'5': "umbrella",
'6': "flatcar",
'7': "sack",
}
files = os.listdir(txtPath)
for i, name in enumerate(files):
xmlBuilder = Document()
annotation = xmlBuilder.createElement("annotation") # 创建annotation标签
xmlBuilder.appendChild(annotation)
txtFile = open(txtPath + name)
txtList = txtFile.readlines()
# img = cv2.imread(picPath + name[0:-4] + ".png")
print('picPath + name[0:-4]',picPath + name[0:-4])
print('picPath + name[0:-4] + ".jpg"',picPath + name[0:-4] + ".jpg")
img = cv2.imread(picPath + name[0:-4] + ".jpg")
Pheight, Pwidth, Pdepth = img.shape
for i in txtList:
oneline = i.strip().split(" ")
print('oneline',oneline)
folder = xmlBuilder.createElement("folder") # folder标签
folderContent = xmlBuilder.createTextNode("VOC2007")
folder.appendChild(folderContent)
annotation.appendChild(folder)
filename = xmlBuilder.createElement("filename") # filename标签
filenameContent = xmlBuilder.createTextNode(name[0:-4] + ".png")
filename.appendChild(filenameContent)
annotation.appendChild(filename)
size = xmlBuilder.createElement("size") # size标签
width = xmlBuilder.createElement("width") # size子标签width
widthContent = xmlBuilder.createTextNode(str(Pwidth))
width.appendChild(widthContent)
size.appendChild(width)
height = xmlBuilder.createElement("height") # size子标签height
heightContent = xmlBuilder.createTextNode(str(Pheight))
height.appendChild(heightContent)
size.appendChild(height)
depth = xmlBuilder.createElement("depth") # size子标签depth
depthContent = xmlBuilder.createTextNode(str(Pdepth))
depth.appendChild(depthContent)
size.appendChild(depth)
annotation.appendChild(size)
object = xmlBuilder.createElement("object")
picname = xmlBuilder.createElement("name")
nameContent = xmlBuilder.createTextNode(dict[oneline[0]])
picname.appendChild(nameContent)
object.appendChild(picname)
pose = xmlBuilder.createElement("pose")
poseContent = xmlBuilder.createTextNode("Unspecified")
pose.appendChild(poseContent)
object.appendChild(pose)
truncated = xmlBuilder.createElement("truncated")
truncatedContent = xmlBuilder.createTextNode("0")
truncated.appendChild(truncatedContent)
object.appendChild(truncated)
difficult = xmlBuilder.createElement("difficult")
difficultContent = xmlBuilder.createTextNode("0")
difficult.appendChild(difficultContent)
object.appendChild(difficult)
bndbox = xmlBuilder.createElement("bndbox")
xmin = xmlBuilder.createElement("xmin")
# mathData = int(((float(oneline[1])) * Pwidth + 1) - (float(oneline[3])) * 0.5 * Pwidth)
mathData = int(oneline[1])
xminContent = xmlBuilder.createTextNode(str(mathData))
xmin.appendChild(xminContent)
bndbox.appendChild(xmin)
ymin = xmlBuilder.createElement("ymin")
# mathData = int(((float(oneline[2])) * Pheight + 1) - (float(oneline[4])) * 0.5 * Pheight)
mathData = int(oneline[2])
yminContent = xmlBuilder.createTextNode(str(mathData))
ymin.appendChild(yminContent)
bndbox.appendChild(ymin)
xmax = xmlBuilder.createElement("xmax")
# mathData = int(((float(oneline[1])) * Pwidth + 1) + (float(oneline[3])) * 0.5 * Pwidth)
mathData = int(oneline[3])
xmaxContent = xmlBuilder.createTextNode(str(mathData))
xmax.appendChild(xmaxContent)
bndbox.appendChild(xmax)
ymax = xmlBuilder.createElement("ymax")
# mathData = int(((float(oneline[2])) * Pheight + 1) + (float(oneline[4])) * 0.5 * Pheight)
mathData = int(oneline[4])
ymaxContent = xmlBuilder.createTextNode(str(mathData))
ymax.appendChild(ymaxContent)
print('92ymax',ymax)
bndbox.appendChild(ymax)
object.appendChild(bndbox)
annotation.appendChild(object)
f = open(xmlPath + name[0:-4] + ".xml", 'w')
# print('98f',f)
xmlBuilder.writexml(f, indent='\t', newl='\n', addindent='\t', encoding='utf-8')
f.close()
# makexml("G:/yolov5/yolov5-master/runs/detect/exp2/labels/", "G:/RGBD_data/0001112220601/3/xml/",
# "G:/RGBD_data/0001112220601/3/rgb/")
# txtPath = r"D:\code\lable\\"
# xmlPath = r"D:\code\data\xml\\"
# picPath = r"D:\code\test_data\test_image221026\\"
# txtPath = r"C:\Users\DELL\Desktop\person\zidunbiaozhu\lable\\"
# xmlPath = r"C:\Users\DELL\Desktop\person\zidunbiaozhu\xml\\"
# picPath = r"C:\Users\DELL\Desktop\person\zidunbiaozhu\test_image230130_new\\"
txtPath = r'D:\code\lable\\'
xmlPath = r'D:\code\xml\\'
picPath = r'D:\code\test_data\test_image230130_new\\'
if not os.path.exists(xmlPath):
os.mkdir(xmlPath)
makexml(txtPath, xmlPath, picPath)
Python
1
https://gitee.com/ferry_zhou/run_network.git
git@gitee.com:ferry_zhou/run_network.git
ferry_zhou
run_network
run_network
master

搜索帮助