网站建设怎么付费,北京网站优化济南兴田德润简介电话,北京发布重磅消息,哪些是用vue做的网站1.文件目录如下所示#xff1a; 对以上目录的解释#xff1a;
1.dataset下面的image文件夹#xff1a;里面装的是数据集的原图片 2.dataset下面的label文件夹#xff1a;里面装的是图片对应得yolo格式标签 3.dataset下面的Annotations文件夹#xff1a;这是一个空文件夹 对以上目录的解释
1.dataset下面的image文件夹里面装的是数据集的原图片 2.dataset下面的label文件夹里面装的是图片对应得yolo格式标签 3.dataset下面的Annotations文件夹这是一个空文件夹里面要装得是即将要生成得voc格式标签
2.转换代码如下所示
新建一个convert.py文件然后将下面代码复制进去
注意文件夹的格式要与我的一样才行
from xml.dom.minidom import Document
import os
import cv2# def makexml(txtPath, xmlPath, picPath): # txt所在文件夹路径xml文件保存路径图片所在文件夹路径
def makexml(picPath, txtPath, xmlPath): # txt所在文件夹路径xml文件保存路径图片所在文件夹路径此函数用于将yolo格式txt标注文件转换为voc格式xml标注文件dic {0: pedestrian, # 创建字典用来对类型进行转换1: people, # 此处的字典要与自己的classes.txt文件中的类对应且顺序要一致2: bicycle,3: car,4: van,5: truck,6: tricycle,7: awning-tricycle,8: bus,9: motor,}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] .jpg)Pheight, Pwidth, Pdepth img.shapefolder xmlBuilder.createElement(folder) # folder标签foldercontent xmlBuilder.createTextNode(driving_annotation_dataset)folder.appendChild(foldercontent)annotation.appendChild(folder) # folder标签结束filename xmlBuilder.createElement(filename) # filename标签filenamecontent xmlBuilder.createTextNode(name[0:-4] .jpg)filename.appendChild(filenamecontent)annotation.appendChild(filename) # filename标签结束size xmlBuilder.createElement(size) # size标签width xmlBuilder.createElement(width) # size子标签widthwidthcontent xmlBuilder.createTextNode(str(Pwidth))width.appendChild(widthcontent)size.appendChild(width) # size子标签width结束height xmlBuilder.createElement(height) # size子标签heightheightcontent xmlBuilder.createTextNode(str(Pheight))height.appendChild(heightcontent)size.appendChild(height) # size子标签height结束depth xmlBuilder.createElement(depth) # size子标签depthdepthcontent xmlBuilder.createTextNode(str(Pdepth))depth.appendChild(depthcontent)size.appendChild(depth) # size子标签depth结束annotation.appendChild(size) # size标签结束for j in txtList:oneline j.strip().split( )object xmlBuilder.createElement(object) # object 标签picname xmlBuilder.createElement(name) # name标签namecontent xmlBuilder.createTextNode(dic[oneline[0]])picname.appendChild(namecontent)object.appendChild(picname) # name标签结束pose xmlBuilder.createElement(pose) # pose标签posecontent xmlBuilder.createTextNode(Unspecified)pose.appendChild(posecontent)object.appendChild(pose) # pose标签结束truncated xmlBuilder.createElement(truncated) # truncated标签truncatedContent xmlBuilder.createTextNode(0)truncated.appendChild(truncatedContent)object.appendChild(truncated) # truncated标签结束difficult xmlBuilder.createElement(difficult) # difficult标签difficultcontent xmlBuilder.createTextNode(0)difficult.appendChild(difficultcontent)object.appendChild(difficult) # difficult标签结束bndbox xmlBuilder.createElement(bndbox) # bndbox标签xmin xmlBuilder.createElement(xmin) # xmin标签mathData int(((float(oneline[1])) * Pwidth 1) - (float(oneline[3])) * 0.5 * Pwidth)xminContent xmlBuilder.createTextNode(str(mathData))xmin.appendChild(xminContent)bndbox.appendChild(xmin) # xmin标签结束ymin xmlBuilder.createElement(ymin) # ymin标签mathData int(((float(oneline[2])) * Pheight 1) - (float(oneline[4])) * 0.5 * Pheight)yminContent xmlBuilder.createTextNode(str(mathData))ymin.appendChild(yminContent)bndbox.appendChild(ymin) # ymin标签结束xmax xmlBuilder.createElement(xmax) # xmax标签mathData int(((float(oneline[1])) * Pwidth 1) (float(oneline[3])) * 0.5 * Pwidth)xmaxContent xmlBuilder.createTextNode(str(mathData))xmax.appendChild(xmaxContent)bndbox.appendChild(xmax) # xmax标签结束ymax xmlBuilder.createElement(ymax) # ymax标签mathData int(((float(oneline[2])) * Pheight 1) (float(oneline[4])) * 0.5 * Pheight)ymaxContent xmlBuilder.createTextNode(str(mathData))ymax.appendChild(ymaxContent)bndbox.appendChild(ymax) # ymax标签结束object.appendChild(bndbox) # bndbox标签结束annotation.appendChild(object) # object标签结束f open(xmlPath name[0:-4] .xml, w)xmlBuilder.writexml(f, indent\t, newl\n, addindent\t, encodingutf-8)f.close()if __name__ __main__:picPath dataset/image/ # 图片所在文件夹路径后面的/一定要带上txtPath dataset/label/ # txt所在文件夹路径后面的/一定要带上xmlPath dataset/Annotations/ # xml文件保存路径后面的/一定要带上makexml(picPath, txtPath, xmlPath)
3.需要修改的地方-标签字典
如果你要转换得标签内容与上面标签字典得内容不同得话请按需求修改成你自己的标签 4.需要修改的地方-文件夹路径
如果你的文件夹路径跟我上面的不一样的话那么在这里修改成你对应的文件夹路径 5.运行你刚刚创建的convert.py文件就生成xml格式的标签了 6.使用labelimg验证一下转换之后的格式
先打开图片和标签所在的文件夹 在这里输入cmd 打开命令行窗口 先激活虚拟环境输入命令
activate yolo 然后使用labelimg验证
labelimg image
在选择标签文件夹的时候选择刚才生成的voc格式标签的文件夹 然后进入页面就是这个样子 说明转换格式成功啦