【问题标题】:Displaying whole image by clicking on a subplot通过单击子图显示整个图像
【发布时间】:2014-08-06 12:48:06
【问题描述】:

我裁剪了图像的某些部分并将它们显示在一个带有子图的图中。子图的数量不确定。我从文件中读取图像然后裁剪它们。我的目标是,当我单击或双击子图时,我想在新图中看到整个图像。

我想举一个例子来说明我的问题。如果我点击第一个子图,我想在新图中看到整个摄影师图像。

有可能吗?如果可以,有什么办法?

【问题讨论】:

  • 创建一个 GUI 并为 4 个子图放置 4 个轴,然后将按钮放在轴上或使用鼠标回调函数?
  • @Divakar 我知道这种方法,但我的问题不仅是 4 张图像。我编辑了我的问题

标签: matlab events image-processing


【解决方案1】:

该示例使用可以添加到大多数 matlab 绘图命令中的 ButtonDownFcn。 只需将两个函数复制到一个文件中并运行“interactivePlot”函数即可。

list_of_images 包含应绘制的所有矩阵。 矩阵的数量是灵活的。但是,您必须调整 subplot 命令...

function interactivePlot
    list_of_images = {rand(5), rand(10), rand(50), rand(100)}

    for ii = 1:length(list_of_images)
        subplot(2,2,ii)
        imagesc(list_of_images{ii}, 'ButtonDownFcn', @newFigure1)
    end
end

function newFigure1(h1, h2)
    figure()
    data = get(h1, 'CData');
    imagesc(data)
end    

【讨论】:

  • 它有效。但是,我的图像没有以原始颜色显示。它们是灰色图像,但看起来色彩缤纷。我不明白原因
  • @sigara 我猜你可以使用 colormap('gray') 让它们变成灰度
【解决方案2】:

我也遇到了同样的问题,改下你的函数就可以解决了:

function newFigure1(h1, h2)
    figure()
    data = get(h1, 'CData');
    colormap(gray);
    imagesc(data)
end 

【讨论】:

    猜你喜欢
    • 2012-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 2023-03-14
    • 2017-10-16
    相关资源
    最近更新 更多