2014-02-17 28 views
0

我想將原始尺寸的彩色圖像保存爲原始尺寸(這裏是146×220像素),但通過這種方法,圖像將被保存在1200×897中,包括額外的邊緣。實際上,圖像將以較大的尺寸保存。我想把它保存在146×220像素。因爲我想將它的像素與原始圖像逐一比較。如果我獲得額外的像素比較活動將是我的問題。 非常感謝您的關注。在matlab中以實際尺寸保存圖像

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 

回答

1

丹尼爾的回答是正確的,你應該怎麼做,但如果你仍然真的需要保存的圖形圖像,你必須做一些額外的步驟。

首先,您要確保圖形與您顯示的圖像具有完全相同的大小,然後您想獲取圖形的內容。

要這樣做,只要給imshow參數「邊框」,「緊」。

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

然後您獲取並從圖像保存顏色數據如下

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

,這應該做的伎倆。

但是,如果你只需要保存圖像而不是真正的數字內容,這顯然是無用的。

+0

非常感謝。正是我只想要數字的內容。它比我期望的更完美。你做了很大的幫助...... – user3313281

1

print保存你傳遞的對象,在這種情況下是一個數字而不是圖像。這個數字可能更大一些。改爲使用imwrite,並且不要忘記通過map

+0

謝謝丹尼爾。這也非常有用。 – user3313281