Conversión de archivos de anotaciones odgt del conjunto de datos de CrowdHuman a txt

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

Supongo que te gusta

Origin blog.csdn.net/qq_41950533/article/details/127347902
Recomendado
Clasificación