如何通过DM-script获取Gatan DigitalMicrograph比例尺标签文本?
如何通过DM-script获取DigitalMicrograph图像的比例尺标签文本?
我正在使用Gatan DigitalMicrograph(DM-script),尝试通过编程获取比例尺上显示的标签文本,例如"200 nm"或"10 μm"。我原本以为该信息存储在与比例尺关联的标签组中,因此尝试了以下代码:
Image img := GetFrontImage() ImageDisplay img_disp = img.ImageGetImageDisplay(0) Component scale = img_disp.ComponentAddNewComponent(31, 0, 0, 1, 1) scale.ComponentSetRect(200, 200, 250, 300) TagGroup tg = scale.ComponentGetTagGroup() tg.TagGroupOpenBrowserWindow(0)
但标签组显示为空。请问如何通过DM-script从DigitalMicrograph图像中获取比例尺标签文本(例如"500 nm")?该值是否存储在可访问的位置,还是仅在渲染时生成?
解决方案
比例尺的显示文本并非直接存储在组件标签组中,而是基于图像物理尺寸参数动态计算生成的。你可以通过以下两种方式获取对应文本:
方法1:调用内置函数直接获取格式化文本
DigitalMicrograph提供了专门的函数,可直接读取比例尺组件的显示文本:
Image img = GetFrontImage() ImageDisplay disp = img.ImageGetImageDisplay(0) // 查找已存在的比例尺组件(类型ID为31) Component scaleComp = disp.ComponentFindChildByType(31, 0) if( scaleComp.ScriptObjectIsValid() ) { string scaleText = scaleComp.ComponentScaleBarGetFormattedLengthText() Result( "比例尺文本:" + scaleText + "\n" ) } else { Result( "未找到图像上的比例尺组件\n" ) }
方法2:基于图像元数据计算生成
从图像的像素尺寸、物理尺寸等元数据反向计算比例尺代表的长度,再格式化输出文本:
Image img = GetFrontImage() number pixWidth = img.ImageGetDimensionSize(0) number physWidth = img.ImageGetPhysicalSizeX() number physUnit = img.ImageGetPhysicalUnit() // 获取已存在的比例尺组件的像素长度 ImageDisplay disp = img.ImageGetImageDisplay(0) Component scaleComp = disp.ComponentFindChildByType(31, 0) number scalePixLength = scaleComp.ComponentGetRect().width // 计算比例尺对应的物理长度 number scalePhysLength = physWidth * (scalePixLength / pixWidth) // 匹配物理单位文本 string unitStr switch( physUnit ) { case 0: unitStr = "m" case 1: unitStr = "cm" case 2: unitStr = "mm" case 3: unitStr = "μm" case 4: unitStr = "nm" case 5: unitStr = "Å" default: unitStr = "unknown" } // 格式化最终文本 string scaleText = Format( "%.2f %s", scalePhysLength, unitStr ) Result( "比例尺文本:" + scaleText + "\n" )
关键说明
- 你之前的代码问题在于新建了空白的比例尺组件,而非获取图像上已存在的组件,应该用
ComponentFindChildByType(31, 0)定位现有比例尺。 - 比例尺文本是动态渲染的,但通过上述两种方式均可获取:要么调用内置函数直接读取格式化结果,要么基于元数据自行计算生成。
内容的提问来源于stack exchange,提问作者Samuel Hao
相关产品推荐
相关产品推荐

