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



我正在尝试使用位于以下位置的脱机数据集:http://www.nlpr.ia.ac.cn/databases/handwriting/Offline_database.html。

但是,我在处理数据(CASIAHWDB1.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这样的归档文件(无论如何,我在你提供的链接上找不到你的文件(。

当你使用fread(fid,n,'uint32')时,matlab读取uint32格式和n el 的线矢量

相关内容

  • 没有找到相关文章

最新更新