2011-07-06 114 views
2

我想在MATLAB中覆蓋兩個圖像(Iimagesc(data)),然後在這些圖像上繪製一個矩形。 I2指定以下代碼中的透明度模式。該矩形成爲圖像頂部的一條線。誰能告訴我爲什麼矩形繪製不正確?在覆蓋圖像上繪製一個矩形

imshow(I);   
hold on; 
h = imagesc(data,[0,1]);  
hold off; 
I2 = ones(height,width) * 80; 
set(h, 'AlphaData', I2); 
rectangle('Position',[100,100,20,20]);  

回答

6

既然我們不能完全照搬你的代碼,而所有的數據,這裏是樣本圖像的完整的例子:

%# some sample images 
I = imread('coins.png'); 
I_transp = imread('peppers.png'); 

%# create a gaussian mask for transparency 
[r,c,~] = size(I_transp); 
M = fspecial('gaussian', [r c], mean([r c]./5)); 
M = (M-min(M(:)))./range(M(:)); 

%# show overlayed images 
figure, imshow(I, 'XData',[1 c], 'YData',[1 r]), hold on 
hImg = imshow(I_transp); 
set(hImg, 'AlphaData',M); 

%# draw a rectangle 
rectangle('Position',[355 220 100 100], 'LineWidth',2, 'EdgeColor','b'); 

enter image description here

+0

感謝您的幫助。我複製了你的代碼,但是和之前一樣,矩形在圖像頂部顯示爲一條線。 我在linux 64位下使用MATLAB 7.9.0.529。 – user499372

+0

@ user499372:可以發佈你所看到的截圖 – Amro

+0

請在以下鏈接中找到圖片:[link] http://i54.tinypic.com/xdebg7.png有一條藍線,長度正確並在第一行更正j。 – user499372