使用 fread() 从 MATLAB 读取二进制文件数据

Reading binary file data from MATLAB using fread()

我正在尝试使用位于以下位置的离线数据集: 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,而且图片不能这样!而imagesc给出的图片有噪点。

谢谢

我的问题可能很愚蠢,但您确定您正在阅读的文件是正确的吗?因为根据我的阅读,.alz 文件是存档文件,例如 .zip(此外,我在您提供的 link 上找不到您的文件)。

并且当您使用 fread(fid,n,'uint32') 时,matlab 读取具有 uint32 格式和 n el

的线向量