我正在尝试从文件中读取一些数据,并将其作为原始数据输出。该文件是一个图像,输出文件我一次写入 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 部分是否正确?
最佳答案
如果您的文件恰好包含 5000x5000x2 字节,每个字节代表正方形图像中的一个像素,这看起来可能可行。使用 memmapfile
很不寻常——事实上,我什至不知道 Matlab 中存在该函数。简单地使用 fread
读取原始图像会更加典型。如果您的图像是标准文件格式(JPG、PNG 等),请使用 imread
.
假设您的图像确实是 5000 x 5000 x uint16,您可能会遇到字节顺序问题。尝试使用 fopen
和 fread
获取数据; Matlab 的 fopen
接受一个参数,告诉它是否进行字节顺序转换。
关于c++ - 如何使用 MATLAB memmapfile 可视化数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7437493/