针对目标检测标注文件,中间矩阵操作的目的是将txt标签格式转换成yolo标签格式,请忽略。
设定路径地址,在前面添加r,避免转义。
glob的glob方法可以提取指定路径的所有文件路径成列表。之后针对每一个txt进行操作。
利用切片操作[:]获取文件名。
numpy的savetxt方法保存txt文件,fmt可以设定保存的数据类型。
具体代码及详细注释如下:
import numpy
import glob
import os
readpath=r'C:\Users\deepw\Desktop\data2yolo\AnnotationFiles'
savepath=r'C:\Users\deepw\Desktop\data2yolo\new'
#读取和存储文件的路径
files=glob.glob(r'%s\*.txt' %readpath) #获取所有txt文件
for path in files: #对每个txt文件
filename=os.path.basename(path)[:-4] #获取文件名
orig=numpy.loadtxt(path) #读取文件
for line in orig: #txt文件数据的矩阵操作(行列式操作)
mid=line[4]
for i in range(4):
line[4-i]=line[3-i]
line[0]=mid
line[1]=max(line[1]-5,1)
line[2]=max(line[2]-5,1)
line[3]=min(line[3]+10,1280)
line[4]=min(line[4]+10,960)
line[1]=(line[1]+(line[3])/2)/1280
line[2]=(line[2]+(line[4])/2)/960
line[3]=(line[3])/1280
line[4]=(line[4])/960
new=orig
numpy.savetxt(r'%s\%s.txt' %(savepath, filename), new, fmt='%d %0.6f %0.6f %0.6f %0.6f') #另存为新的txt文件