首页 > 解决方案 > 通过 Python 在 DigitalMicrograph 中注释

问题描述

有没有人成功获得在 DM 中使用 Python 显示的行(或任何其他)注释?我的代码是:

img = DM.CreateImage(...)
img_disp = img.CreateImageDisplay(1)
img_disp.AddNewComponent(2, 512, 0, 512, 1000)
img.ShowImage()
del imgk

从理论上讲,这应该绘制一个水平线注释,但是即使我可以在图像显示组件中找到“线注释”类型的子组件,我也没有在我的图像中看到任何内容。Python中也有这个函数,但我在 DM 脚本语言中NewLineAnnotation()找不到这样的函数。ComponentAddChildAtEnd()

标签: pythondm-script

解决方案


您遇到的问题是,这ShowImage() 会创建一个与您的img_disp.

您有两种解决方法:

  • 您可以创建一个imageDocument,然后将创建的 imageDisplay 添加到其中。

  • 或者您使用第ShowImage一个然后获取imageDisplay。

我会推荐第二种解决方案,除非由于某种原因您不想首先显示图像。所以代码是:

# This is a PYTHON script to be run in DigitalMicrograph
import numpy as np
img = DM.CreateImage( np.arange(120000).reshape(300, 400).copy() )
img.ShowImage()
img.GetImageDisplay(0).AddNewComponent(2, 150, 100, 150, 300)
del img

等效的 DM 脚本将是:

// This is a DM-script to be run in DigitalMicrograph
image img := IntegerImage("Test",4,0,400,300) = irow
img.ShowImage()
img.ImageGetImageDisplay(0).ComponentAddNewComponent(2,150,100,150,300)

推荐阅读