我想以原始大小保存彩色图像(这里是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
答案 0 :(得分:1)
print
保存您传递的对象,在这种情况下是图形而不是图像。这个数字可能更大。请改用imwrite
,不要忘记传递map
。
答案 1 :(得分:1)
Daniel的回答是正确的,你应该怎么做,但是如果你仍然 需要从图中保存图像,你必须做几个额外的步骤。
首先,您要确保图形与您正在显示的图像具有完全相同的大小,然后您想获得图形的内容。
要做到这一点,只需要显示“边界”,“紧”的论点。
h = figure('visible', 'off'); imshow(imFClass,[], 'Border','tight');
然后从框架中获取并保存颜色数据,如下所示
myPic = getframe(h);
imwrite(myPic.cdata, 'yourPathName','yourFormat')
这应该可以解决问题。
然而,如果您只需要保存图像而不是图像的内容,这显然是无用的。