Digital Micrograph - 在 CameraAcquire() 方法上返回自定义图像的回调

Digital Micrograph - Callback to return a custom image on CameraAcquire() method

提问人:Fabio 提问时间:6/5/2023 更新时间:6/6/2023 访问量:41

问:

我正在使用Digital Micrograph进行一些自动化测试,我想在获取图像时从特定文件夹返回自定义图像。我在文档中找不到明确的事件。有没有办法向 CameraAcquire 方法添加回调?

例如,如果我运行这个:

number camID = CameraGetActiveCameraID()
image img1
CameraPrepareForAcquire(camID)
img1 := CameraAcquire(camID)
ShowImage(img1)

img1 将设置为我的自定义图像,而不是 CameraAcquire(camID) 通常返回的图像。

谢谢

事件 回调 dm-script

评论


答:

0赞 Mike Kundmann 6/6/2023 #1

如果我正确理解了您的问题,我相信您可以在自动化测试脚本中使用 OpenImage 函数代替 CameraAcquire。您可以在 DM 在线帮助的“脚本>文件输入和输出”部分找到有关此功能的详细信息(通过“帮助”>“搜索菜单命令访问)。OpenImage 仅接受一个参数,即包含自定义映像的文件路径的字符串。如果希望脚本提示您查找并选择自定义图像文件(而不是对其文件路径进行硬编码),则可以使用 OpenDialog 函数。联机帮助的“脚本>示例脚本>文件”部分给出了其用法示例。

评论

0赞 Fabio 6/6/2023
嗨,迈克。是的,你做对了。这里需要注意的是,我不能更改脚本(当然,如果这是我尝试这样做的唯一方法)。我的想法是在 GMS 中放置一些事件侦听器或回调,在后台运行,在相机采集完成时起作用,将结果图像替换为我的自定义图像。感谢您的帮助。
2赞 BmyGuest 6/6/2023
小评论。“OpenImage()”是一个有点古怪的命令,只是由于遗留原因仍然存在。保存的文件实际上是 ImageDocuments,应该使用 NewImageDocumentFromFile() 打开。OpenImage() 将起作用(对于保存的简单图像),但它只会加载 Image 对象,而不是 ImageDisplay!因此,人们可以丢失注释或配色方案之类的东西。
2赞 BmyGuest 6/6/2023
@Fabio 您无法为 Camera 添加回调,但您可以附加 EventListeners 用于最前面的图像,以及 - 在较新的 GMS 上 - 用于首次显示的 ImageDocuments。您可以使用这样的事件,然后查看图像的标签,以确定它是否是新的相机图像,然后您可以对其进行操作。不确定这是否有助于您的目标。
1赞 Mike Kundmann 6/7/2023
@Fabio 根据 BmyGuest 的建议,如果可以将接收相机读数的 Image 对象设置为持久性对象(即在上述代码片段的上下文之外创建和显示图像),然后通过直接赋值将相机数据传输到它(即 img1 = CameraAcquire(camID)), 然后,可以通过对 Image 对象使用“data_changed”事件来检测相机读数。我使用这种方法在“预览”模式下对图像采集数据进行注释的实时更新。
0赞 Fabio 6/7/2023
谢谢你的帮助,@BmyGuest和迈克。我看到不可能对相机采集本身进行回调,但我认为我可以设法更改脚本并利用您关于事件侦听器的建议。