代码之家  ›  专栏  ›  技术社区  ›  16per9

在MATLAB中将多个绘图的结果分配给一个变量[重复]

  •  1
  • 16per9  · 技术社区  · 7 年前

    假设您有一个图像。 绘制此图像。

    之后,在该图像的顶部绘制绿色跟踪。 使用 plot 作用

    在此初始绘图之后,在同一图像的顶部添加第二个跟踪。 因此,您有一个具有两个绘图的图形,就像此图中所示。

    如何将多个绘图的结果存储到一个变量中,而不保存到文件中,然后读取最终结果? 如果我打印并读取图像,我可以做到这一点,但我想要相同的结果,而不需要额外的保存到文件的步骤。

    有什么线索吗?

    示例代码和图:

    imshow(a)
    hold on
    plot(centroidsFiltered(:,2),centroidsFiltered(:,1),'.g','LineWidth',0.5)
    plot(int32(centroidsFiltered(i,2)), int32(centroidsFiltered(i,1)), '.g', 'MarkerSize',20)
    

    绘图产生的数据如下所示。

    如何将所有结果信息存储到一个变量中?

    enter image description here

    可在此处下载数据: https://expirebox.com/download/c95e9a0e5ac5530729f6960679ec9733.html

    澄清 我想从这个图中得到的输出变量是原始图像矩阵,在可以看到绿线和绿色标记的矩阵位置进行更新。

    1 回复  |  直到 7 年前
        1
  •  1
  •   Aero Engy    7 年前

    您可以尝试使用 getframe . See Documentation

    imshow(a)
    hold on
    plot(centroidsFiltered(:,2),centroidsFiltered(:,1),'.g','LineWidth',0.5)
    plot(int32(centroidsFiltered(i,2)), int32(centroidsFiltered(i,1)), '.g', 'MarkerSize',20)
    
    b = getframe(gca);
    

    要重新创建绘图,请执行以下操作:

    figure;
    imshow(b.cdata)
    

    注:该尺寸 b.cdata a 不会完全一样。因为这是轴的屏幕抓取 b 边界周围很可能会有一些额外的像素。但是,如果将单位仔细设置为像素,并使用可选的 rect 输入到 getframe公司 您可以获得正确的输出尺寸。