【问题标题】:draw a rectangle on top of overlaid images在重叠的图像上绘制一个矩形
【发布时间】:2013-04-12 04:05:54
【问题描述】:

我想在 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]);    

【问题讨论】:

    标签: matlab overlay


    【解决方案1】:

    由于我们无法在没有所有数据的情况下完全重现您的代码,因此这里有一个带有示例图像的完整示例:

    %# 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');
    

    【讨论】:

    • 感谢您的帮助。我复制了您的代码,但和以前一样,矩形在图像顶部显示为一条线。我在 linux 64 位下使用 MATLAB 7.9.0.529。
    • @user499372:你能发一张你看到的截图吗
    • 请在以下链接中找到图片:[link]i54.tinypic.com/xdebg7.png第一行有一条长度正确且j正确的蓝线。
    • @user499372:如果您按原样复制了示例,但仍然得到错误的输出,那么我想它一定是一个错误(特定于您的 MATLAB 版本,或者它是 Linux 的东西)。也许您应该向 Mathworks 提交支持请求...
    • @user499372:我有一个小错字,现在再试一次。如果这没有改变结果,请按照我上面的建议继续。
    猜你喜欢
    • 1970-01-01
    • 2023-01-03
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 2017-06-09
    • 1970-01-01
    • 2012-12-28
    • 2013-03-09
    相关资源
    最近更新 更多