news 2026/5/25 16:15:56

【Halcon-2D测量】read_metrology_model 函数功能(用于从指定文件中读取经模型)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【Halcon-2D测量】read_metrology_model 函数功能(用于从指定文件中读取经模型)

HALCON算子read_metrology_model全解析

一、算子核心定位

read_metrology_model是HALCON 2D计量(2D Metrology)模块的文件IO类核心算子,核心功能是从指定文件(默认后缀.mtr)中读取经write_metrology_model保存的完整计量模型,生成可直接使用的计量模型句柄。它实现了2D计量模型的“持久化复用”——无需重复手动创建计量对象、配置测量参数,直接加载预定义的模型即可开展检测,大幅提升项目开发效率和模型复用性。

二、算法核心原理

  1. 文件有效性校验:检查输入的FileName对应的文件是否存在、文件格式是否为HALCON计量模型专属的.mtr格式,且文件内容未损坏/篡改;
  2. 模型数据解析:读取文件中存储的所有计量模型信息,包括:
    • 计量模型全局参数(如相机参数、测量单位、投影方式);
    • 所有计量对象的配置(如对象类型:圆/矩形/线、初始位置、测量长度、Sigma、振幅阈值等);
    • 模糊规则参数(若有配置);
  3. 内存实例化:在内存中创建新的计量模型实例,将解析后的所有参数加载到该实例中;
  4. 句柄生成:为内存中的计量模型实例分配唯一的MetrologyHandle句柄,作为后续操作该模型的唯一标识;
  5. 状态初始化:确保加载后的模型处于“就绪状态”,可直接调用apply_metrology_modelget_metrology_object_indices等算子,无需额外初始化。

三、参数全详解

(一)输入参数(Input Parameters)

参数名类型功能说明默认值关键取值规则注意事项
FileNamefilename.read → (string)要读取的计量模型文件名(含路径)-取值规则:
▪ 支持相对路径(如'model/circle_model.mtr')或绝对路径(如'D:/halcon_model/circle_model.mtr');
▪ 文件后缀必须为.mtr(HALCON计量模型专属格式)
1. 路径错误、文件不存在会抛出“文件未找到”异常;
2. 非.mtr格式文件(如.txt/.dat)会抛出“文件格式无效”异常;
3. 若仅传文件名(如'circle_model.mtr'),则从当前工作目录读取

(二)输出参数(Output Parameters)

参数名类型功能说明关联说明
MetrologyHandlemetrology_model → (handle)加载后的计量模型句柄1. 是后续所有2D计量算子(如apply_metrology_model/get_metrology_object_result)的核心输入;
2. 每个read_metrology_model调用生成独立的句柄,修改该模型不会影响原.mtr文件;
3. 使用完毕需调用clear_metrology_model释放,避免内存泄漏

四、使用关键注意事项

  1. 文件格式约束:仅能读取由write_metrology_model保存的.mtr文件,其他格式(如手动修改的.mtr、重命名的.txt)会触发格式异常,无法加载;
  2. 路径规则
    • 相对路径:相对于HALCON程序的“当前工作目录”(可通过get_system('working_directory')查看);
    • 绝对路径:建议在项目中使用绝对路径,避免因工作目录变化导致文件找不到;
  3. 句柄特性
    • 算子返回的句柄是独立的内存实例,对该模型的修改(如set_metrology_object_param)仅作用于内存,不会同步到原.mtr文件;
    • 即使句柄作为输入参数,set_metrology_object_param等算子仍可修改其内部状态;
  4. 多线程特性
    • 多线程类型:可重入(能与非排他算子并行运行);
    • 多线程范围:全局(可从任意线程调用);
    • 无并行优化:单线程读取文件并加载模型,大模型(含多个计量对象)加载可能耗时稍长;
  5. 内存管理:加载后的模型句柄会占用内存,必须在使用完毕后调用clear_metrology_model释放,否则会导致内存泄漏;
  6. 返回值规则:执行成功返回2(H_MSG_TRUE),文件不存在/格式错误/权限不足时直接抛出异常(而非返回错误码)。

五、算子调用链路

(一)前置算子(Possible Predecessors)

  • write_metrology_model:将配置好的计量模型保存为.mtr文件(read_metrology_model的必要前提,无此算子则无可用的.mtr文件);

(二)后置算子(Possible Successors)

  • get_metrology_object_indices:获取加载模型中的计量对象索引;
  • apply_metrology_model:使用加载的模型执行边缘检测与拟合;
  • get_metrology_object_num_instances:统计检测到的实例数量;
  • get_metrology_object_result:读取拟合后的测量结果;
  • clear_metrology_model:释放计量模型句柄(收尾必备)。

六、与相似算子的核心差异

算子名称核心区别适用场景
read_metrology_model.mtr文件加载已配置完成的计量模型,直接可用量产项目、需复用模型的场景(避免重复配置参数)
create_metrology_model创建空的计量模型,需手动调用add_metrology_object_*添加对象/配置参数快速验证、临时创建模型的场景
write_metrology_model将内存中的计量模型保存为.mtr文件,实现持久化配置好模型后,保存为文件供后续复用

八、总结

关键点回顾

  1. read_metrology_model核心作用是读取.mtr格式的预保存计量模型,生成可直接使用的模型句柄,实现模型复用;
  2. 仅支持读取write_metrology_model保存的.mtr文件,路径错误/格式不符会触发异常;
  3. 加载后的模型句柄需在使用完毕后调用clear_metrology_model释放,避免内存泄漏。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/26 4:41:55

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience一句话介绍: 一个用3D方式重温手机历史的趣味体验!网址:chaz.fun网站简介CHAZ 3D Experience 是一个以 “有趣的东西数字化!” 为理念打造的互动网站。它将手机博物馆搬到线上&a…

作者头像 李华
网站建设 2026/5/26 5:34:28

keysight是德N5232A PNA-L微波网络分析仪,20 GHz

Keysight是德 N5232A 微波矢量网络分析仪,带宽300 kHz 至 20 GHz,2 端口或 4 端口,具有一个内置信号源,133 dB 系统动态范围,100,001 个点,200 个通道,15 MHz 中频带宽, 大输出功率&…

作者头像 李华
网站建设 2026/5/26 3:16:45

构筑昇腾AI推理基石,赋能全场景智能应用落地

MindIE:构筑昇腾AI推理基石,赋能全场景智能应用落地 在AI技术加速渗透千行百业的当下,推理部署环节的性能、兼容性与易用性成为制约智能应用规模化落地的核心瓶颈。华为昇腾推出的MindIE(Mind Inference Engine,昇腾推…

作者头像 李华
网站建设 2026/5/26 5:38:24

扎心!刚评上院士,就被曝十余篇论文造假!6篇论文已被撤

此前,华中农大同一课题组11名硕博生举报导师学术造假一事,热度不减。后续,华中农业大学在官微发布情况通报,认定黄教授存在学术不端行为。学校决定即日起停止黄某某校内所有职务和工作,组建导师组全面负责该课题组研究…

作者头像 李华
网站建设 2026/5/26 5:36:26

基于Java的商业银行税务智慧管理系统的设计与实现全方位解析:附毕设论文+源代码

1. 为什么这个毕设项目值得你 pick ? 《基于Java的商业银行税务智慧管理系统的设计与实现》旨在提供一个系统化、模块化的解决方案,满足商业银行业务管理的实际需求。该系统涵盖客户档案管理、存款账户管理、贷款申请管理等20个功能模块,每个模块均对应…

作者头像 李华