我想在执行imshow(im,[])
后将图像保存到文件中;稍后在GUI中显示它。我正在尝试以下代码,但它不起作用。
New= imshow(uint8(MHI{t}),[]);
imwrite(New,'TMHI.jpg','jpg')
任何帮助将不胜感激。谢谢。
答案 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');