【问题标题】:Save image in actual size in matlab在matlab中以实际大小保存图像
【发布时间】:2014-02-18 03:09:33
【问题描述】:

我想以原始尺寸保存彩色图像(这里是 146 x 220 像素),但是通过这种方法,图像将保存在 1200 x 897 中,包括额外的边距。实际上图像会以更大的尺寸保存。我想将它完全保存在 146 x 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

【问题讨论】:

    标签: matlab


    【解决方案1】:

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

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

    为此,只需给 imshow 参数 'Border'、'tight'。

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

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

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

    这应该可以解决问题。

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

    【讨论】:

    • 非常感谢。正是我只想要图的内容。它的效果比我预期的要好。你帮了大忙……
    【解决方案2】:

    print 保存您正在传递的对象,在本例中是图形而不是图像。该图的尺寸可能更大。请改用imwrite,不要忘记传递map

    【讨论】:

    • 谢谢丹尼尔。它也非常有用。
    猜你喜欢
    • 2013-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-23
    相关资源
    最近更新 更多