【问题标题】:Convert image to array and show again it in image将图像转换为数组并在图像中再次显示
【发布时间】:2018-10-17 10:04:14
【问题描述】:

我正在使用以下代码显示先前转换为数组的数组中的图像。但图片显示不正确:

I = imread('ut.jpg');
image=mat2gray(I);
imshow(image);
FID = fopen('FileName.txt', 'w');
if FID == -1, error('Cannot create file.'); end
fprintf(FID, '%g  %g  %g ... %g \n', image);
fclose(FID);
x = 100*rand(512,1500);
fileID = fopen('FileName.txt','w');
fprintf(fileID,'%f',x);
fclose(fileID);
imshow(x);

【问题讨论】:

  • 你期待看到什么,你看到了什么?您是否尝试过 imshow(x,[]) 来启用自动缩放?

标签: image matlab


【解决方案1】:

位图由两部分组成。第一个:3 个颜色强度矩阵,分级为 uint,数字从 0 到 255。第二个:包含有关大小、颜色深度、文件长度等信息的标题。

您的程序没有创建正确的图像,因为它缺少标题。

关于matlab程序:

通过在 RGB 图像上使用imread,您将自动创建一个矩阵。如果您使用rgb2gray 将其转换为灰度,您将拥有uint 的单个矩阵(没有任何附加层)。

如果您想在处理后保护您的图像,只需使用:

I = imread('ut.jpg');

% Convert, do smth e.g. I_new = rgb2gray(I);

filename = 'myNewImage.jpg';
imwrite(I_new,filename);

通过使用imwrite,您会自动创建一个正确的标题。

【讨论】:

    猜你喜欢
    • 2020-08-13
    • 2011-11-25
    • 2011-02-09
    • 2018-12-03
    • 2013-05-11
    • 1970-01-01
    • 2016-07-30
    • 1970-01-01
    相关资源
    最近更新 更多