2011-09-13 4 views
5

나는 경고이며 코드에는 영향을 미치지 않는다는 것을 안다.하지만 내 문제는 줌없이 이미지를 실제 크기로 보여줘야한다는 것이다. 밖으로 .. imshow 함수에서 가능합니까 거기에 어떤 매개 변수가 이것을합니까? 이미지가 너무 커서 화면 (MATLAB)에 맞을 수 없다.

당신에게 감사 작동합니다

+1

[IMTOOL] (http://www.mathworks.com/help/toolbox/images/ref/imtool.html)을 사용해 보셨습니까? – Amro

+0

나는 그것을 시도 .. 작동 ..하지만 '인쇄'를 사용하여 절약 문제 때문에'imshow'하고 싶습니다 ..'imtool'은 그림을 저장하지 못하게합니다 –

+0

비슷한 질문 : [MATLAB : 이미지 보여주기 원래 크기] (http://stackoverflow.com/questions/1427602/matlab-showing-an-image-in-its-original-size) – Amro

답변

3

하나 개의 솔루션은 모든 이미지의 픽셀 한 화면 픽셀이되도록 축 제한을 변경 한 후 이미지를 표시하고 모든 :

%# read an image and make it large 
img = imread('autumn.tif'); 
img = repmat(img,[10,10]); 

%# turn off the warning temporarily, we're going to fix the problem below 
%# Note that in R2011b, the warning ID is different! 
warningState = warning('off','Images:initSize:adjustingMag'); 
figure 
imshow(img) 
warning(warningState); 


%# get axes limits in pixels 
set(gca,'units','pixels') 
pos = get(gca,'position') 

%# display the top left part of the image at magnification 100% 
xlim([0.5 pos(3)-0.5]),ylim([0.5 pos(4)-0.5]) 

지금 당신이 선택할 수 있습니다 손 (팬 도구)을 열고 필요에 따라 이미지를 이동하십시오.

+0

@Jonas Heidelberg : 그것을 고쳤습니다. – Jonas

+1

매우 근사 :-). 's = warning ('off', 'Images : initSize : adjustmentMag');를 추가 할 수 있습니다. 그림, imshow (img); 경고; '경고 메시지를 피하려면 ... –

+0

(더 이상 적용되지 않는 이전 댓글 삭제 ...) –

3

이미 상향 조정 된 @Jonas의 솔루션이 정말 좋습니다.

function onResize(o,e,hAx) 
    %# get axes limits in pixels 
    oldUnits = get(hAx, 'Units'); %# backup normalized units 
    set(hAx, 'Units','pixels') 
    pos = get(hAx, 'Position'); 
    set(hAx, 'Units',oldUnits)  %# restore units (so it auto-resize) 

    %# display the top left part of the image at magnification 100% 
    xlim(hAx, [0 pos(3)]+0.5) 
    ylim(hAx, [0 pos(4)]+0.5) 
end 

screenshot

당신은 아마이 문제를 개선 할 수있는 다음

%# read an image and make it large 
img = imread('autumn.tif'); 
img = repmat(img, [10 10]); 

%# new figure 
hFig = figure; 

%# try show image at full size (suppress possible warning) 
s = warning('off', 'Images:initSize:adjustingMag'); 
imshow(img, 'InitialMagnification',100, 'Border','tight') 
warning(s); 

%# handle figure resize events 
hAx = gca; 
set(hFig, 'ResizeFcn',{@onResize,hAx}) 

%# call it at least once 
feval(@onResize,hFig,[],hAx); 

%# enable panning tool 
pan on 

가 크기 조정 콜백 함수입니다 :이 그림은 크기가 조정되는 경우 처리 수 있도록 나에게 약간의 개선을 제안하자 또한 그림의 크기를 조정할 때 항상 왼쪽 상단으로 돌아 가지 않고 현재 위치를 유지할 수 있습니다.

+0

멋진 추가 정보! – Jonas

+0

고맙습니다 .. :) ..하지만 작동하지 않습니다 .. 이미지의 거대한 크기 때문에 작동하지 않았다고 생각합니다. '1914-by-2294' –

+0

@OmarOsama : 정확히 무엇을 가지고 있습니까? 잘못 갔어? 그것은 나를 위해 잘 작동합니다. 위 예제에서 바둑판 식 이미지 크기는 2060x3450입니다. – Amro

0

참고

xlim([(w_image - w_window)/2, (w_image + w_window)/2]); 
    ylim([(h_image - h_window)/2, (h_image + h_window)/2]); 
w_image 및 h_image 이미지의 크기가

및 w_window을 사용 (대신 좌상 게재) 이미지 중심과 상기 응답 '위치가 h_window있다 내지 (3) pos (4)와 같습니다.

관련 문제