首页 > 解决方案 > 如何在 python dm-script 中遍历 TagGroups

问题描述

如何在 python的TagGroup中使用s 的未知结构?


TagGroups 在DigitalMicrograph中被广泛使用。但是我如何在 python 中穿越它们呢?如何获取所有可用的标签名称?

正常情况dm-script下有TagGroupGetTagLabel()和之类的功能TagGroupGetTagType()。可以使用for-loop 来检查结构。但是 python 包装类中没有一个函数Py_TagGroup可以获取有关标签的信息。此外,这些示例从不处理 unknown TagGroups。


我有一个非常简单的问题:我想使用(显示、修改、检查、保存……)图像中的标签。但我不知道标签名称。

img = camera.AcquireImage()
tg = img.GetTagGroup()

但现在呢?我对此一无所知TagGroupTagGroups 是不可迭代的,所以我不能在for-loops 中使用它们。我可以得到它们的长度,但我只能访问索引处的数据。只有当我知道数据类型时。我既不能得到类型也不能得到标签。


中穿越TagGrouppython 中的 s ?我怎样才能得到结构?

标签: pythontagstraversaldm-script

解决方案


GitHUBexecdmscript上的Python模块(版本≥1.1.4)支持将s转换为python或s。所以下面的代码对我有用:Py_TagGroupdictlist

import execdmscript

img = camera.AcquireImage()
tg = img.GetTagGroup()

# convert the Py_TagGroup object to a python dict
tg = execdmscript.convert_from_taggroup(tg)

for key in tg:
    print(key, tg[key])

免责声明:我是该execdmscript模块的作者。目前对于这个问题仍然没有简单的解决方案1,所以我相信这是最好的解决方案。


1execdmscript.convert_from_taggroup()为此使用持久标签和dm-script代码。它涉及将 保存Py_TagGroup到全局标签。由于dm-script代码可以穿过TagGroups,因此TagGroup通过执行dm-scriptpython 解释器中的代码来分析 s 的结构。结果再次保存到持久标签。然后使用 python 从全局标签中读取结构,并且可以从中创建一个dict或。list


推荐阅读