1

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

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

4

2 回答 2

1

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

相同的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)
}
于 2016-02-15T15:41:10.017 回答
1

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

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

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

您将在此答案中找到示例代码

于 2016-02-15T15:32:02.360 回答