暴力csv转voc数据集xml

使用脚本环境:python3,安装了opencv(获取图片宽、高、深度)

1、csv格式

暴力csv转voc数据集xml_第1张图片

暴力csv转voc数据集xml_第2张图片

2、暴力强行转换

list里面嵌list

外层是不同图片的list

里层是同一张图的多个目标

暴力csv转voc数据集xml_第3张图片

暴力csv转voc数据集xml_第4张图片

3、资源链接:

https://download.csdn.net/download/mynameisyournamewuyu/10562024

4、从xml文件里找出目标矩形框,转成csv文件

(这里我真的无语,因为官方给xml标注文件有问题,不得已只好转成csv,再利用我上面写的脚本转回xml)

以下贴出xml转csv的脚本:

import os
import csv


def getXml(path):
    filesname=[]
    dirs = os.listdir(path)
    return dirs

def getRects(name):
    inputF=open(name,'r')
    cont=inputF.read()
    inputF.close()
    if not cont:
        return
    begin1=0
    begin2=0
    begin3=0
    begin4=0
    rects=[]
    count=0
    while True:
        count+=1
        pos1=cont.find("",begin1)
        begin1=cont.find("",pos1)
        rect=cont[pos1+6:begin1]+" "

        
        pos2=cont.find("",begin2)
        begin2=cont.find("",pos2)
        rect+=cont[pos2+6:begin2]+" "

        
        pos3=cont.find("",begin3)
        begin3=cont.find("",pos3)
        rect+=cont[pos3+6:begin3]+" "

        
        pos4=cont.find("",begin4)
        begin4=cont.find("",pos4)
        rect+=cont[pos4+6:begin4]

        if pos1==-1:
            break
        rects.append(rect)
    return rects

def csvData(xmlPath):
    xml=getXml(xmlPath)
    data=[]
    for i in xml:
        jpgName=i[:-4]
        rects=getRects(xmlPath+'/'+i)
        for rect in rects:
            row=[]
            row.append(jpgName)
            row.append(rect)
            data.append(row)
    return data
    

csvFile = open('harbor.csv','w', newline='')  //csv文件
writer = csv.writer(csvFile)
for i in csvData("./Wharbor"):  //xml文件的上一级路径
    writer.writerow(i)
csvFile.close()

 

你可能感兴趣的:(QT)