我如何在 python dm-script 中遍历标签组
How do I travel through TagGroups in python dm-script
如何在 python 中的 dm-script 中使用 TagGroup
的未知结构?
TagGroup
广泛应用于数码显微。但是我如何在 python 中穿越它们呢?我如何获得所有可用的标签名称?
在正常的dm-script
中有TagGroupGetTagLabel()
和TagGroupGetTagType()
这样的函数。可以使用 for
循环来检查结构。但是 python 包装器 class Py_TagGroup
中没有一个函数可以获取有关标签的信息。此外,这些示例从不处理未知的 TagGroup
s.
我有一个非常简单的问题:我想使用(显示、修改、检查、保存...)图像中的标签。但是我不知道标签名称。
img = camera.AcquireImage()
tg = img.GetTagGroup()
但是现在呢?我对此一无所知TagGroup
。 TagGroup
不可迭代,所以我不能在 for
循环中使用它们。我可以获得它们的长度,但我只能访问索引处的数据。而且只有当我知道数据类型时。我既不能得到类型也不能得到标签。
再说一遍:如何在 dm-script 中穿越 python 中的 TagGroup
s?我怎样才能得到结构?
Python API 只是 DM-script API 的一个子集,不幸的是初始版本缺少一些重要的命令。如果您觉得缺少特定命令,请在 Gatan 的“问题报告”表单中将其作为功能请求报告。
GMS 3.4.2 似乎不包含执行所需操作的必要命令(在 Python 中)
顺便说一句,tagGroups 是 可迭代的。
taggroup tg = NewTagGroup()
tg.TagGroupSetTagAsString("a","A")
tg.TagGroupSetTagAsString("b","B")
tg.TagGroupSetTagAsString("d","d")
tg.TagGroupSetTagAsString("c","C")
string str
tg.tagGroupGetIndexedTagAsString(2,str)
Result("\n str:" + str)
tg.TagGroupOpenBrowserWindow("",0)
GitHUB 上的 Python 模块 execdmscript
(版本 ≥ 1.1.4)支持将 Py_TagGroup
转换为 python dict
s 或 list
s。所以下面的代码对我有用:
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])
Disclaimer: I am the author of the execdmscript
module. Still there is no easy solution1 for this problem at the moment so I am sure this is the best solution.
1execdmscript.convert_from_taggroup()
为此使用持久性标签和 dm-script
代码。它涉及将 Py_TagGroup
保存到全局标签。由于 dm-script
代码可以通过 TagGroup
s,TagGroup
的结构通过从 python 解释器执行 dm-script
代码来分析。结果再次保存到持久性标签中。然后使用 python 从全局标签中读取结构,并可以从中创建 dict
或 list
。
如何在 python 中的 dm-script 中使用 TagGroup
的未知结构?
TagGroup
广泛应用于数码显微。但是我如何在 python 中穿越它们呢?我如何获得所有可用的标签名称?
在正常的dm-script
中有TagGroupGetTagLabel()
和TagGroupGetTagType()
这样的函数。可以使用 for
循环来检查结构。但是 python 包装器 class Py_TagGroup
中没有一个函数可以获取有关标签的信息。此外,这些示例从不处理未知的 TagGroup
s.
我有一个非常简单的问题:我想使用(显示、修改、检查、保存...)图像中的标签。但是我不知道标签名称。
img = camera.AcquireImage()
tg = img.GetTagGroup()
但是现在呢?我对此一无所知TagGroup
。 TagGroup
不可迭代,所以我不能在 for
循环中使用它们。我可以获得它们的长度,但我只能访问索引处的数据。而且只有当我知道数据类型时。我既不能得到类型也不能得到标签。
再说一遍:如何在 dm-script 中穿越 python 中的 TagGroup
s?我怎样才能得到结构?
Python API 只是 DM-script API 的一个子集,不幸的是初始版本缺少一些重要的命令。如果您觉得缺少特定命令,请在 Gatan 的“问题报告”表单中将其作为功能请求报告。
GMS 3.4.2 似乎不包含执行所需操作的必要命令(在 Python 中)
顺便说一句,tagGroups 是 可迭代的。
taggroup tg = NewTagGroup()
tg.TagGroupSetTagAsString("a","A")
tg.TagGroupSetTagAsString("b","B")
tg.TagGroupSetTagAsString("d","d")
tg.TagGroupSetTagAsString("c","C")
string str
tg.tagGroupGetIndexedTagAsString(2,str)
Result("\n str:" + str)
tg.TagGroupOpenBrowserWindow("",0)
GitHUB 上的 Python 模块 execdmscript
(版本 ≥ 1.1.4)支持将 Py_TagGroup
转换为 python dict
s 或 list
s。所以下面的代码对我有用:
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])
Disclaimer: I am the author of the
execdmscript
module. Still there is no easy solution1 for this problem at the moment so I am sure this is the best solution.
1execdmscript.convert_from_taggroup()
为此使用持久性标签和 dm-script
代码。它涉及将 Py_TagGroup
保存到全局标签。由于 dm-script
代码可以通过 TagGroup
s,TagGroup
的结构通过从 python 解释器执行 dm-script
代码来分析。结果再次保存到持久性标签中。然后使用 python 从全局标签中读取结构,并可以从中创建 dict
或 list
。