Чтение данных двоичного файла из MATLAB с использованием fread () - PullRequest
0 голосов
/ 26 февраля 2020

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

Однако у меня возникают проблемы при обработке данных (файлы CASIA-HWDB1.0-1.2 gnt ). Я использовал пример кода, расположенный по адресу http://www.nlpr.ia.ac.cn/databases/Download/GntRead.cpp.pdf, но он не компилируется. В результате я использую MATLAB для чтения данных, но данные, кажется, не читаются правильно, так как отображаемые изображения не соответствуют действительности. Ниже приведен мой тестовый код, который должен считывать и отображать одно изображение:

fid = fopen("HWDB1.1trn_gnt.alz", 'rb', 'n','GB2312');
length= fread(fid, 1, 'uint32');
label= fread(fid, 2, 'int8');
width= fread(fid, 1, 'uint16');
height= fread(fid, 1, 'uint16');
bitmap=fread(fid, width*height, 'uint8');
imgtmp=reshape(bitmap, [height, width]);
imagesc(imgtmp)
fclose(fid)

Очевидно, что это не работает, так как моя ширина равна 0, и это не может быть так для картинки! И изображения c дают картину шума.

спасибо

1 Ответ

0 голосов
/ 26 февраля 2020

Мой вопрос может быть глупым, но вы уверены, что файл, который вы читаете, правильный? Потому что из того, что я прочитал, файлы .alz - это архивные файлы, такие как .zip (более того, я не смог найти ваш файл по указанной вами ссылке).

А когда вы используете fread(fid,n,'uint32'), matlab читает строковый вектор с форматом uint32 и n el

...