使用脚本环境: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()