El archivo odgt es similar a json: una entidad tiene múltiples atributos y se pueden llamar datos específicos utilizando la identificación del valor clave y los atributos.
Los principales nombres de atributos y significados reales en CrowdHuman son los siguientes:
id: nombre de la imagen
hbox: posición de la cabeza, respectivamente xywh
fbox: posición de todo el cuerpo, respectivamente xywh
import os
import json
def load_func(fpath):
assert os.path.exists(fpath)
with open(fpath, 'r') as fid:
lines = fid.readlines()
records = [json.loads(line.strip('\n')) for line in lines]
return records
fpath='xx.odgt'
bbox = load_func(fpath)
#print(bbox)
with open('crowdhuman.txt','a+')as f:
for i in bbox:
ID = 'Images/'+i['ID']+'.jpg'
num = str(len(i['gtboxes']))
f.write(ID)
f.write('\n')
f.write(num)
f.write('\n')
for j in i['gtboxes']:
#print(i['gtboxes'])
j['hbox'][2]=j['hbox'][0]+j['hbox'][2]
j['hbox'][3]=j['hbox'][1]+j['hbox'][3]
strtmp=list(map(str,j['hbox']))
strtmp=strtmp[0]+' '+strtmp[1]+' '+strtmp[2]+' '+strtmp[3]
f.write(strtmp)
f.write('\n')
La primera línea del archivo txt convertido es el nombre del archivo, la segunda línea es el número de caras etiquetadas y las líneas restantes son las coordenadas de la cara, que son las coordenadas de la esquina superior izquierda y la esquina inferior derecha.
Images/273271,c9db000d5146c15.jpg
6
171 208 233 291
268 183 328 266
363 219 417 290
455 190 508 268
537 187 592 260 602
186 673 27 9