Halcon 2D测量Metrology找线/圆/矩形/椭圆

       通过2D测量,可以获取物体的范围、方向、角度、位置、尺寸和个数等特征。其中,Halcon的2D Metrology模块提供了亚像素级别的卡尺测量功能,可以测量的几何形状包括直线、圆、椭圆、矩形等。对于2D度量,必须提供要测量的对象的位置,方向和几何形状的近似值。在显示对象的图像内,这些近似对象的边界用于定位对象的真实边缘以适应几何形状的参数,使得它们最佳地适合图像数据。测量结果是优化的参数。计量模型用于存储所有必要的信息,例如计量对象的位置和几何形状的初始参数,控制测量的参数以及测量结果。

     测量流程:

     创建模型:create_metrology_model
     设置图像大小:set_metrology_model_image_size
     添加测量模型:add_metrology_object_generic

                             add_metrology_object_rectangle2_measure

                             add_metrology_object_line_measure

                             add_metrology_object_circle_measure

                             add_metrology_object_ellipse_measure
     设置对象参数:set_metrology_object_param
     设置模型参数:set_metrology_model_param
     对齐测量模型:align_metrology_model
     应用测量模型:apply_metrology_model
     获取结果:get_metrology_object_result
     显示结果:get_metrology_object_result_contour、get_metrology_object_measures


代码案例

1):找线

read_image (Image, 'E:/数据/测量程序/找线找点/图片/33.bmp')
dev_set_draw('margin')
dev_set_line_width (1)
get_image_size (Image, Width, Height)
create_metrology_model (MetrologyHandle)
set_metrology_model_image_size (MetrologyHandle, Width, Height)
add_metrology_object_line_measure (MetrologyHandle, 69.1489, 137.685, 69.8938, 395.477,40, 10, 0.4, 20, [], [], Index1)
set_metrology_object_param (MetrologyHandle, 'all', 'measure_transition', 'negative')
set_metrology_object_param (MetrologyHandle, 'all', 'measure_select', 'first')
set_metrology_object_param (MetrologyHandle, 'all', 'num_measures', 8)
dev_set_color ('blue')
apply_metrology_model (Image, MetrologyHandle)
get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row, Column)
gen_contour_polygon_xld (Contour, Row, Column)
fit_line_contour_xld (Contour, 'tukey', -1, 0, 5, 2, RowBegin, ColBegin, RowEnd, ColEnd, Nr, Nc, Dist)
gen_contour_polygon_xld (Contourline, [RowBegin,  RowEnd], [ColBegin,ColEnd])

2):找圆

    create_metrology_model (MetrologyHandle)set_metrology_model_image_size (MetrologyHandle, Width, Height)add_metrology_object_generic (MetrologyHandle, 'circle', [197, 778, 113.146], 30, 10, 0.4, 30, [], [], Index)set_metrology_object_param (MetrologyHandle, 'all', 'measure_transition', 'positive')set_metrology_object_param (MetrologyHandle, 'all', 'measure_select', 'first')set_metrology_object_param (MetrologyHandle, 'all', 'num_measures', 15)dev_set_color ('blue')apply_metrology_model (Image, MetrologyHandle)get_metrology_object_measures (Contours1, MetrologyHandle, 'all', 'all', Row, Column)gen_contour_polygon_xld (Contour1, Row, Column)fit_circle_contour_xld (Contour1, 'algebraic', -1, 0, 0, 3, 2, Row1, Column1, Radius, StartPhi, EndPhi, PointOrder)gen_circle_contour_xld (ContCircle, Row1, Column1, Radius, 0, 6.28, 'positive', 3)

3):找矩形

    create_metrology_model (MetrologyHandle)set_metrology_model_image_size (MetrologyHandle, Width, Height)add_metrology_object_generic (MetrologyHandle, 'rectangle2', [408.304, 273.611, rad(-0), 164, 129], 30, 10, 0.4, 20, [], [], Index)set_metrology_object_param (MetrologyHandle, 'all', 'measure_transition', 'positive')set_metrology_object_param (MetrologyHandle, 'all', 'measure_select', 'first')set_metrology_object_param (MetrologyHandle, 'all', 'num_measures', 20)dev_set_color ('blue')apply_metrology_model (Image, MetrologyHandle)get_metrology_object_measures (Contours2, MetrologyHandle, 'all', 'all', Row, Column)gen_contour_polygon_xld (Contour2, Row, Column)fit_rectangle2_contour_xld (Contour2, 'regression', -1, 0, 0, 3, 2, Row2, Column2, Phi, Length1, Length2, PointOrder1)gen_rectangle2_contour_xld (Rectangle, Row2, Column2, Phi, Length1, Length2)

4):找椭圆   

    create_metrology_model (MetrologyHandle)set_metrology_model_image_size (MetrologyHandle, Width, Height)add_metrology_object_generic (MetrologyHandle, 'ellipse', [551.304, 772.611, rad(-90), 161, 90], 30, 10, 0.4, 20, [], [], Index)set_metrology_object_param (MetrologyHandle, 'all', 'measure_transition', 'positive')set_metrology_object_param (MetrologyHandle, 'all', 'measure_select', 'first')set_metrology_object_param (MetrologyHandle, 'all', 'num_measures', 20)dev_set_color ('blue')apply_metrology_model (Image, MetrologyHandle)get_metrology_object_measures (Contours3, MetrologyHandle, 'all', 'all', Row, Column)gen_contour_polygon_xld (Contour3, Row, Column)fit_ellipse_contour_xld (Contour3, 'fitzgibbon', -1, 0, 0, 200, 3, 2, Row3, Column3, Phi1, Radius1, Radius2, StartPhi1, EndPhi1, PointOrder2)gen_ellipse_contour_xld (ContEllipse, Row3, Column3, Phi1, Radius1, Radius2, 0, 6.28, 'positive', 1.5)

            

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/461468.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PostgreSQL的学习心得和知识总结(一百五十七)|新的 COPY 选项 LOG_VERBOSITY

目录结构 注:提前言明 本文借鉴了以下博主、书籍或网站的内容,其列表如下: 1、参考书籍:《PostgreSQL数据库内核分析》 2、参考书籍:《数据库事务处理的艺术:事务管理与并发控制》 3、PostgreSQL数据库仓库…

分析 std::optional 的使用与常见错误

文章目录 引言常见错误及解决方案1. 错误使用 std::optional 变量进行算术运算2. 错误检查 std::optional 是否有值3. 忽视 std::optional 的默认值 结论 引言 std::optional 是 C17 引入的一个模板类,用于表示可能有也可能没有值的情况。它特别适用于函数返回值&a…

大模型中的token是什么;常见大语言模型的 token 情况

目录 大模型中的token是什么 常见大语言模型的 token 情况 大模型中的token是什么 定义 在大模型中,token 是文本处理的基本单位。它可以是一个字、一个词,或者是其他被模型定义的语言单元。简单来说,模型在理解和生成文本时,不是以完整的句子或段落为单位进行一次性处理…

深度了解flink(七) JobManager(1) 组件启动流程分析

前言 JobManager是Flink的核心进程,主要负责Flink集群的启动和初始化,包含多个重要的组件(JboMaster,Dispatcher,WebEndpoint等),本篇文章会基于源码分析JobManagr的启动流程,对其各个组件进行介绍&#x…

深度学习模型入门教程指南

在当前的人工智能生成内容(AIGC)领域中,深度学习模型无疑是支撑其技术核心的关键组件。深度学习模型的广泛应用极大地推动了图像生成、自然语言处理和自动化工作流的发展,本文将从多个角度介绍深度学习模型的概念、构建过程、实际…

C语言指针的介绍

零.导言 在日常生活中,我们常常在外出时居住酒店,细心的你一定能发现酒店不同的房间上有着不同的门牌号,上面写着像308,512之类的数字。当你定了酒店之后,你就会拿到一个写有门牌号的钥匙,凭着钥匙就能进入…

【Spring MVC】DispatcherServlet 请求处理流程

一、 请求处理 Spring MVC 是 Spring 框架的一部分,用于构建 Web 应用程序。它遵循 MVC(Model-View-Controller)设计模式,将应用程序分为模型(Model)、**视图(View)和控制器&#x…

[ 问题解决篇 ] win11远程桌面报错:出现身份验证错误要求的函数不受支持(附完整解决方案)

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

汽车免拆诊断案例 | 2010款起亚赛拉图车发动机转速表指针不动

故障现象  一辆2010款起亚赛拉图车,搭载G4ED 发动机,累计行驶里程约为17.2万km。车主反映,车辆行驶正常,但组合仪表上的发动机转速表指针始终不动。 故障诊断  接车后进行路试,车速表、燃油存量表及发动机冷却温度…

自动化运维

自动化运维是指使用工具和脚本自动化管理、配置、监控和维护IT基础设施的过程。通过自动化运维,可以提高工作效率,减少人为错误,增加系统的可预测性和稳定性。以下是实现自动化运维的常见步骤和工具: 常见步骤: 1. 定义…

驱动——线程断链和信息获取

实验环境&#xff1a;win7 x32 断链&#xff1a; #include <ntifs.h>NTSTATUS EnumThread(ULONG ulPid, ULONG ulTid) {PEPROCESS pProcessAddr PsGetCurrentProcess();PLIST_ENTRY pHeadlink (PLIST_ENTRY)((ULONG)pProcessAddr 0xb8);PLIST_ENTRY pNextlink pHead…

AWD挨打记录

前言 昨天参加了星盟的AWD集训&#xff0c;本来寻思能猛猛乱杀&#xff0c;结果加固时间只有20分钟&#xff0c;WAF还没push上去就被三家上了不死马QAQ cms是站帮主&#xff0c;之前没打过&#xff0c;D盾啥也没扫出来&#xff0c;还寻思是个贼安全的系统&#xff0c;结果洞满…

鸿蒙打包hvigorw clean报错No npmrc file is matched in the current user folder解决

问题 在执行hvigorw clean等命令时&#xff0c;报错如下&#xff1a; Error: The hvigor depends on the npmrc file. No npmrc file is matched in the current user folder. Configure the npmrc file first解决方案 在用户当前目录下新建.npmrc文件&#xff0c;并配置如下…

前端如何实现进度条

将进度条的宽度动态控制&#xff0c;通过css的transition动画来控制 <template><div class"container"><div class"base-progress"><div class"inner" :style"{ width: w % }"><div class"text&qu…

SWAT-MODFLOW地表水与地下水耦合实践技术

耦合模型被应用到很多科学和工程领域来改善模型的性能、效率和结果&#xff0c;SWAT作为一个地表水模型可以较好的模拟主要的水文过程&#xff0c;包括地表径流、降水、蒸发、风速、温度、渗流、侧向径流等&#xff0c;但是对于地下水部分的模拟相对粗糙&#xff0c;考虑到SWAT…

江协科技STM32学习- P27 实验-串口发送/串口接收

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

Linux笔记--基础入门

文章目录 Linux基础知识点文件目录*磁盘分区**基础命令*Linux运行级别关机重启手册alias别名ntsysv系统服务管理程序 Linux常用命令命令分类命令行格式选项参数 命令行辅助操作 真常用命令()help命令&#xff1a;帮助指令man手册页manual page绝对路径与相对路径绝对路径&#…

11月1日星期五今日早报简报微语报早读

11月1日星期五&#xff0c;农历十月初一&#xff0c;早报#微语早读。 1、六大行今日起实施存量房贷利率新机制。 2、谷歌被俄罗斯罚款35位数&#xff0c;罚款远超全球GDP。 3、山西吕梁&#xff1a;女性35岁前登记结婚&#xff0c;给予1500元奖励。 4、我国人均每日上网时间…

Pandas DataFrame学习补充

1. 从字典创建&#xff1a;字典的键成为列名&#xff0c;值成为列数据。 import pandas as pd# 通过字典创建 DataFrame df pd.DataFrame({Column1: [1, 2, 3], Column2: [4, 5, 6]}) 2. 从列表的列表创建&#xff1a;外层列表代表行&#xff0c;内层列表代表列。 df pd.Da…

<项目代码>YOLOv8 煤矸石识别<目标检测>

YOLOv8是一种单阶段&#xff08;one-stage&#xff09;检测算法&#xff0c;它将目标检测问题转化为一个回归问题&#xff0c;能够在一次前向传播过程中同时完成目标的分类和定位任务。相较于两阶段检测算法&#xff08;如Faster R-CNN&#xff09;&#xff0c;YOLOv8具有更高的…