通过 Python 在 DigitalMicrograph 中注释
Annotations in DigitalMicrograph via Python
有没有人成功地在 DM 中使用 Python 显示行(或任何其他)注释?我的代码是:
img = DM.CreateImage(...)
img_disp = img.CreateImageDisplay(1)
img_disp.AddNewComponent(2, 512, 0, 512, 1000)
img.ShowImage()
del imgk
理论上,这应该绘制一条水平线注释,但我在图像中没有看到任何东西,尽管我可以在图像显示组件中找到类型为 'line annotation' 的子组件。在 Python 中也有函数 NewLineAnnotation()
但我找不到像 ComponentAddChildAtEnd()
这样存在于 DM 脚本语言中的函数。
您遇到的问题是,ShowImage()
创建了 与您的 img_disp
.
不同的新显示
您有两种解决方法:
要么你创建一个imageDocument,然后将创建的imageDisplay添加到其中。
或者你先用ShowImage
然后getimageDisplay.
除非出于某种原因您不想首先显示图像,否则我会推荐第二种解决方案。所以代码将是:
# 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)
有没有人成功地在 DM 中使用 Python 显示行(或任何其他)注释?我的代码是:
img = DM.CreateImage(...)
img_disp = img.CreateImageDisplay(1)
img_disp.AddNewComponent(2, 512, 0, 512, 1000)
img.ShowImage()
del imgk
理论上,这应该绘制一条水平线注释,但我在图像中没有看到任何东西,尽管我可以在图像显示组件中找到类型为 'line annotation' 的子组件。在 Python 中也有函数 NewLineAnnotation()
但我找不到像 ComponentAddChildAtEnd()
这样存在于 DM 脚本语言中的函数。
您遇到的问题是,ShowImage()
创建了 与您的 img_disp
.
您有两种解决方法:
要么你创建一个imageDocument,然后将创建的imageDisplay添加到其中。
或者你先用
ShowImage
然后getimageDisplay.
除非出于某种原因您不想首先显示图像,否则我会推荐第二种解决方案。所以代码将是:
# 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)