Bunun sadece bir uyarı olduğunu ve kodun etkilenmeyeceğini biliyorum .. ama benim sorunum, görüntüyü herhangi bir yakınlaştırma yapmadan gerçek boyutunda göstermem gerektiğidir dışarı .. imshow
fonksiyonunda bu mümkün olan herhangi bir parametre var mı? image ekranda sığmayacak kadar büyük (MATLAB)
cevap
bir çözüm her görüntü pikseli için bir ekran piksel olacak şekilde eksenler sınırlarını değiştirmek sonra görüntüyü ve tüm:
%# 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])
Artık seçebilirsiniz el (tava aracı) ve görüntüyü gerektiği gibi hareket ettirin.
@Jonas Heidelberg: düzeltildi. – Jonas
çok güzel :-). 'S = uyarı ('kapalı', 'Görüntüler: initSize: adjustingMag') ekleyebilirsiniz; şekil, imshow (img); uyarı (ları); 'uyarı mesajını engellemek için ... –
(artık geçerli olmayan eski yorumları siliyor ...) –
Önceden kayıtlı olduğum @Jonas ile verilen çözüm gerçekten çok iyi.
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
Muhtemelen bu hale getirebileceği: Aşağıdaki
%# 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
boyutlandırma geri arama işlevi şudur: rakamın boyutlandırılır durum işleme alacağı şekilde bana bazı küçük iyileştirmeler önermek edelim Ayrıca, şekli yeniden boyutlandırdığınızda, her zaman sol üst köşeye geri dönmezsiniz, ancak geçerli konumu korursunuz.
Not:
xlim([(w_image - w_window)/2, (w_image + w_window)/2]);
ylim([(h_image - h_window)/2, (h_image + h_window)/2]);
w_image ve h_image görüntü boyutları olan
ve w_window kullanımı, (yerine, sol üst gösteren) görüntü merkezi ve yukarıdaki cevapları poz h_window olan için (3) ve pos (4), sırasıyla.
[IMTOOL] (http://www.mathworks.com/help/toolbox/images/ref/imtool.html) kullanmayı düşündünüz mü? – Amro
Bunu denedim .. işe yarıyor .. ama '' im '' '' '' '' '' imtool'' kullanarak sorunları kaydetme nedeniyle bunu yapmak imshow' istiyorum –
rakamı kaydetmem için bana benzer bir soru: [MATLAB: bir resim gösteriyor orijinal boyutunda] (http://stackoverflow.com/questions/1427602/matlab-showing-an-image-in-its-original-size) – Amro