从imshow保存图像

时间:2016-01-14 14:21:53

标签: matlab image-processing computer-vision

我想在执行imshow(im,[])后将图像保存到文件中;稍后在GUI中显示它。我正在尝试以下代码,但它不起作用。

 New= imshow(uint8(MHI{t}),[]);
 imwrite(New,'TMHI.jpg','jpg')

任何帮助将不胜感激。谢谢。

3 个答案:

答案 0 :(得分:4)

imshow函数仅用于在MATLAB中显示图像。如果要保存它,则根本不需要imshow。并且:New返回的值(imshow())是该图的句柄。如果要修改图形在屏幕上的显示方式,则需要该句柄。

要将映像写入磁盘,只需要imwrite函数,该函数具有以下语法:

imwrite(A,filename)

其中A是图像数组。 如果文件名以.jpg结尾,则默认情况下MATLAB将创建JPEG图像,因此您无需指定。 (但当然,你仍然可以。)

但在保存之前:您的图像规范化存在问题。 MATLAB假设double图像缩放为[0,1]并且uint8图像缩放为[0,255]。使用imshow(im,[])覆盖这些默认值并使MATLAB计算新值。保存时您将遇到同样的问题。解决方案是正确地标准化图像。这可以使用im2uint8函数来完成,该函数将输入缩放到最大值255,并将其转换为uint8。请注意,如果需要,您必须手动删除最小值:

newImage = im2uint8(MHI{t} - min(MHI{t}(:)));
imwrite(newImage,'TMHI.jpg')

答案 1 :(得分:2)

如果您确实需要在matlab中保存显示图形的内容(有时在使用imagesc进行显示时也很有用,因为它有一些智能逻辑可以正确缩放您的值范围),您可能会感兴趣{{3和} savefig,可以保存图形的内容。它也可以用这样的子图保存图形或图形。

在这种情况下,你会使用类似的东西:

F = imshow(uint8(MHI{t}),[]);
saveas('MHI.png');

如果您真的需要保存存储在MHI {t}中的图像,那么hbaderts的答案是可行的......

答案 2 :(得分:0)

只需使用我的NormalizeImage函数并保存图像:

In [347]: store.get('df')
Out[347]:
     C
0_Y  1
0_Z  2
1_Y  4
1_Z  5
0_V  0
0_W  1
0_X  2
1_V  3
1_W  4
1_X  5

我的NormalizeImage功能:

img = NormalizeImage(imgDouble);
imwrite(img ,'MyImage.png');