如何使用MATLAB memmapfile可视化数据?

时间:2011-09-15 21:11:30

标签: c++ image matlab

我正在尝试从文件中读取一些数据,并将其作为原始数据输出。该文件是一个图像,输出文件我一次写入数据1行。

在matlab中,我执行以下操作:

bin_path = 'myfile.bin';
m = memmapfile(bin_path, 'Format', {'uint16', [5000 5000], 'im'});
disp(m)
figure, imagesc(m.Data.im), colormap(gray)

为了尝试显示数据,我想我会得到一张图片。然而,它不是一个图像,它只是一堆黑色和灰色和白色的线条。

此设置的matlab部分是否正确?

1 个答案:

答案 0 :(得分:1)

如果您的文件恰好包含5000x5000x2字节,每个字节代表方形图像中的像素,则看起来它可能会起作用。使用memmapfile是不寻常的 - 事实上,我甚至不知道Matlab中存在这个功能。简单地使用fread来读取原始图像会更为典型。如果您的图片采用标准文件格式(JPG,PNG等),请使用imread

假设您的图像真的是5000 x 5000 x uint16,您可能会遇到字节序问题。尝试使用fopenfread来获取数据; Matlab的fopen接受一个论证,告诉它是否要进行字节顺序翻译。