从imshow保存图像

Hin*_*wzi 2 matlab image-processing computer-vision

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

 New= imshow(uint8(MHI{t}),[]);
 imwrite(New,'TMHI.jpg','jpg')
Run Code Online (Sandbox Code Playgroud)

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

hba*_*rts 5

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

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

imwrite(A,filename)
Run Code Online (Sandbox Code Playgroud)

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')
Run Code Online (Sandbox Code Playgroud)