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

标签 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 部分是否正确?

最佳答案

如果您的文件恰好包含 5000x5000x2 字节,每个字节代表正方形图像中的一个像素,这看起来可能可行。使用 memmapfile 很不寻常——事实上,我什至不知道 Matlab 中存在该函数。简单地使用 fread 读取原始图像会更加典型。如果您的图像是标准文件格式(JPG、PNG 等),请使用 imread .

假设您的图像确实是 5000 x 5000 x uint16,您可能会遇到字节顺序问题。尝试使用 fopenfread 获取数据; Matlab 的 fopen 接受一个参数,告诉它是否进行字节顺序转换。

关于c++ - 如何使用 MATLAB memmapfile 可视化数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7437493/

相关文章:

Javascript 图像预加载,我做错了什么

arrays - 如何在 MATLAB 中声明一个没有大小的数组?

c++ - 将 VIPS 图像用作 QImage 的快速方法

c++ - 检查整个数组是否为空

c# - 在打开文件对话框之前显示图片框中的默认图片

c++ - 高斯模糊图像处理c++

matlab - 排列矩阵行内的元素

matlab - 将矩阵的每一列乘以另一个矩阵

c++ - 将 vector 的内容复制到文件中

c++ - 在 g++ 中生成 "-L"和 -rpath 标志的等效函数是什么