【问题标题】:How to link two ROIs on two different images如何链接两个不同图像上的两个 ROI
【发布时间】:2016-02-15 12:39:26
【问题描述】:

我编写了一个小程序,将 ROI 的帧和位置从一个图像复制到另一个相同大小的图像。 我现在要做的是将两个 ROI 连接起来,这样当我移动一个 ROI 时,另一个 ROI 会相应地移动。

在 Dave 的 mitchell DM 脚本网站上,我发现他使用了函数 ConnectObject。但他没有解释它是如何工作的。 我阅读了 DM3 的文档,但找不到有关该功能的任何信息。

【问题讨论】:

  • 请添加您到目前为止尝试过的代码,然后寻求建议以实现您的目标。

标签: dm-script


【解决方案1】:

这里有两个可行的概念。您可以使用以下两种方法之一:

1) 使用“ConnectObject”在移动 ROI 时附加一些功能,即当您移动 ROI 1 时,它会“触发”代码,您可以使用该代码来更新其他 rois。

2) 使用“ImageDisplayListeners”将功能附加到移动特定 imageDisplay 上的 any ROI 时, 即,当图像 A 的 ROI 被移动时,它会触发代码,您可以使用该代码来更新其他 rois。

您将找到示例code in this answer

【讨论】:

    【解决方案2】:

    对于简单的事情,还有另一种选择:

    相同 ROI 添加到多个图像显示器:

    在这种情况下,ROI 会自动“链接”,因为它们实际上只是内存中的一个对象(但显示在两个显示器上)。更改一个将更改另一个。 但是,如果您保存/加载图像,此链接将“丢失”,因为当您加载图像时,所有 ROI(在内存中)都是新创建的。下面是一些简单的示例代码:

    image img1, img2
    GetTwoLabeledImagesWithPrompt("Select two images of same size.", "Select", "Source", img1, "Destination", img2 )
    
    imageDisplay disp1 = img1.ImageGetImageDisplay( 0 ) 
    imageDisplay disp2 = img2.ImageGetImageDisplay( 0 ) 
    number nR = disp1.ImageDisplayCountROIs()
    
    for ( number i = 0; i<nR; i++ )
    {
        ROI theROI = disp1.ImageDisplayGetROI(i)
        disp2.ImageDisplayAddROI(theROI)
    }
    

    【讨论】:

      猜你喜欢
      • 2020-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多