набор данных из 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