暴力csv转voc数据集xml

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

1、csv格式

2、暴力强行转换

list里面嵌list

外层是不同图片的list

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

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("<xmin>",begin1)
        begin1=cont.find("</xmin>",pos1)
        rect=cont[pos1+6:begin1]+" "

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

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

        
        pos4=cont.find("<ymax>",begin4)
        begin4=cont.find("</ymax>",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()

 

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值