0

我在通过脚本将图像批量转换为 EELS 数据时遇到问题。

我比较了 EELS 数据和图像之间的区别,主要区别在于 EELS 数据具有标签组:“元数据”,其中包含“格式:光谱图像”和“信号:EELS”标签。(“格式”和“信号”在“元数据”标签组中。)

这是我的代码:

image front := GetFrontImage()
Taggroup imgtags=front.ImageGetTaggroup()
Taggroup metadata = NewTaggroup()
Taggroup tg = NewTaggroup()
number index
index = metadata.TaggroupCreateNewLabeledTag("Meta data")
index = tg.TaggroupCreateNewLabeledTag("Format")
tg.TaggroupSetIndexedTagAsString( index, "Spectrum image")
index = tg.TaggroupCreateNewLabeledTag("Signal")
tg.TaggroupSetIndexedTagAsString( index, "EELS")
metadata.TaggroupCopyTagsFrom(tg.TaggroupClone())
imgtags.TaggroupCopyTagsFrom(metadata.TaggroupClone())

但它返回的“格式”、“信号”和“元数据”处于同一级别。

有人知道我的代码有什么问题吗?非常感谢。

4

1 回答 1

0

由于可以采用不同的路线(简化命令与详细命令)和标签类型(带有索引条目的 TagLists 与带有标签条目的 TagGroups。),在脚本中使用标签/标签组可能会令人困惑。

您在示例中想要的基本上是:

  • 创建一个新的标记组(元数据

  • 有该组的两个(字符串)子标签

  • 将该组添加到前面的图像

这是在脚本中完成的:

TagGroup metaDataTG = newTagGroup()
metaDataTG.TagGroupSetTagAsString( "Format", "Spectrum image" )
metaDataTG.TagGroupSetTagAsString( "Signal", "EELS" )

GetFrontImage().ImageGetTagGroup().TagGroupSetTagAsTagGroup( "Meta Data", metaDataTG )

但是,您也可以在此处使用“最简单”的命令,因为这是您知道的特定标签路径(无索引列表)。你可以简单地做:

image img := GetFrontImage()
img.SetStringNote( "Meta Data:Format", "Spectrum image" )
img.SetStringNote( "Meta Data:Signal", "EELS" )

还有一件事值得知道:

元数据标签在 DigitalMicrograph 内部大量使用。通过脚本更改它们有时可能会触发意外行为。特别是:许多插件仅在第一次显示图像时“读取”这些标签一次。因此,当您通过脚本将标签添加到已显示的图像时,它不会立即“影响”DigitalMicrograph。您需要关闭它并重新打开它。

如果您想用这些标签标记任何“新”图像,最好在显示图像之前执行此操作。

于 2017-02-03T12:55:00.373 回答