Как я могу прочитать этот набор данных? (OLHWDB из CASIA) - PullRequest
0 голосов
/ 22 марта 2020

набор данных из http://www.nlpr.ia.ac.cn/databases/handwriting/Online_database.html Я очень стараюсь получить доступные данные, но не удалось выполнить аналогичный ниже код, который может работать в автономной версии casia, но не работает на OLHWDB

Основная проблема заключается в следующем: как мне прочитать байт набора данных и преобразовать его в правильный тип данных (short, int)? как мне расшифровать тэгкод на китайский язык? (приведенный ниже код может прочитать только один символ, а затем потерпеть неудачу)

def read_from_pot_dir(pot_dir=train_data_dir):
    def one_file(f):
        tag={}
        tag_id = 0
        sizes = []
        header_size = 8
        while True:
            header = np.fromfile(f,dtype='uint8',count=header_size)
            if not header_size:break
            sample_size = header[0] + (header[1]<<8)
            sizes.append(sample_size)
            tagcode = header[2] + header[3]<<8 + header[4]<<16 + header[5]<<24
            stroke_num = header[6] + header[7]<<8
            strokes = {k:[] for k in range(stroke_num)}
            k=0
            print('sample_size',sample_size,'stroke_num',stroke_num)
            for i in range(stroke_num):
                    xy = np.fromfile(f,dtype='uint8',count=4)
                    xy = struct.unpack('>2h',xy)
                    x = xy[0]
                    y = xy[1]

                    if x==-1 and y==-1:
                        tag.update({tag_id:{tagcode:strokes}})
                        tag_id +=1

                        test_end = np.fromfile(f,dtype='uint8',count=2)

                        k += 1
                    elif x == -1 and y == 0:
                        k += 1
                    else:
                        strokes[k].append(xy)
        yield tag,sizes  
    for file_name in os.listdir(pot_dir):
        if file_name.endswith('.pot'):
            file_path = os.path.join(pot_dir, file_name)
            with open(file_path, 'rb') as f:
                for strokes, tagcode in one_file(f):
                    yield tag,sizes
...