【问题标题】:How to convert a matrix to an image?如何将矩阵转换为图像?
【发布时间】:2014-10-12 18:02:57
【问题描述】:

正如标题所说,问题是如何将矩阵转换为具有调整位深度的图像?

我正在所有单元格中创建一个 5x5 矩阵设置值。喜欢,

A=[.....;.....;.....;.....;.....]

然后使用imwrite函数,

imwrite(A, Path, 'BitDepth', 2)

使用此功能后,“路径”中会出现一个图像文件。当我检查图像的位深度时,它是正确的(2 位),但是当我读取该图像时,我看到图像数据矩阵中的所有零。

我想创建一个 2 位深度的 5x5 图像文件,我可以定义所有像素值。我该如何克服这个问题?

编辑:

完整代码:

A=[0 0 2 1 1;1 2 2 2 2;2 2 2 2 3;1 2 3 3 2;2 3 1 3 2];
imwrite(A, 'Path', 'BitDepth', 2);
I=imread('Path'); //Path is 'C:\Users\...\...\...\...\...\...\A.png'

我看到 I 矩阵中的所有零。

【问题讨论】:

  • 你用什么代码来读取图像?
  • 我不看图片。我想转换我从中创建矩阵的图像。
  • 你说“当我读到那张图片时,我看到的都是零”……那你的意思是什么?
  • 呃对不起我的错误。我以为你误解了。那是我。我用 imread(Path) 读取图像
  • 没问题!这很奇怪,因为我尝试使用随机数据并且效果很好。您能否展示您的所有代码以便我们轻松找到错误?

标签: image matlab matrix bit-depth


【解决方案1】:

您可以使用Image = mat2gray(A) 将矩阵 A 转换为灰度图像。基本上mat2gray() 只会将矩阵中的值从 0..1 缩放

之后imwrite(Image, 'Path.png', 'Bitdepth', 2) 工作正常。

【讨论】:

  • 当我使用 mat2gray(A) 时,A 的值会发生变化。如果我在使用 mat2gray 后忽略它并读取 Image 并再次手动更改值,这次 imwrite 函数会将值拉伸到 8 位深度。我想创建 2 位图像,所以根本行不通。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多