在matlab中以实际大小保存图像

时间:2014-02-17 18:41:28

标签: matlab

我想以原始大小保存彩色图像(这里是146 x 220像素),但是通过这种方法,图像将被保存在1200×897中,包括额外的损坏。实际上图像将以更大的尺寸保存。我想将它保存在146×220像素。因为我想将它的像素逐个与原始图像进行比较。如果我获得额外的像素比较活动对我来说将是有问题的。 提前感谢您的关注。

function   []=doCmeans (imInput)
        H = single(imInput(:));% original image is gray scale
        nRegions = 5;
        options = [2 100 1e-5 0];
        [Center, U, obj_fun] = fcm (H,nRegions,options);
        maxU = max(U);
        for i = 1:nRegions
        tmpindex = find (U(i,1))==maxU;
        H (tmpindex)= i;
        end
        [r c]=size (imInput);
        imFClass = reshape (H, r,c);
        colormap(hsv(5));
        h = figure('visible', 'off'); imshow(imFClass,[]);
        print(h,'-djpeg',sprintf('ImFuzzy.jpg'));
end

2 个答案:

答案 0 :(得分:1)

print保存您传递的对象,在这种情况下是图形而不是图像。这个数字可能更大。请改用imwrite,不要忘记传递map

答案 1 :(得分:1)

Daniel的回答是正确的,你应该怎么做,但是如果你仍然 需要从图中保存图像,你必须做几个额外的步骤。

首先,您要确保图形与您正在显示的图像具有完全相同的大小,然后您想获得图形的内容。

要做到这一点,只需要显示“边界”,“紧”的论点。

h = figure('visible', 'off'); imshow(imFClass,[], 'Border','tight');

然后从框架中获取并保存颜色数据,如下所示

myPic = getframe(h);
imwrite(myPic.cdata, 'yourPathName','yourFormat')

这应该可以解决问题。

然而,如果您只需要保存图像而不是图像的内容,这显然是无用的。