2014-02-17 2 views
0

컬러 이미지를 원본 크기 (여기에 146x220 픽셀)로 저장하고 싶지만,이 방법으로 이미지는 여분의 마진을 포함하여 1200x897로 저장됩니다. 실제로 이미지는 더 큰 크기로 저장됩니다. 256 x 256 픽셀로 정확하게 저장하고 싶습니다. 왜냐하면 나는 원래 이미지와 그 픽셀을 하나씩 비교하기를 원하기 때문입니다. 내가 여분의 픽셀을 얻는다면 저에게 문제가 될 것입니다. 미리 알려 주셔서 감사합니다.이미지를 실제 크기로 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

관련 문제