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

问题描述 投票:0回答:1

我正在尝试使用位于以下位置的离线数据集: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给出了噪声的图像。

谢谢

matlab dataset fread
1个回答
0
投票

我的问题可能很愚蠢,但是您确定正在读取的文件正确吗?因为从我阅读的内容来看,.alz文件是诸如.zip之类的存档文件(此外,在提供的链接中找不到您的文件)。

并且当您使用fread(fid,n,'uint32')时,matlab会以uint32格式和n el读取线向量

© www.soinside.com 2019 - 2024. All rights reserved.