[机器视觉]halcon应用实例 边缘检测2

        一个学习找边的实例2,用于练习相关算子,这个版本比较简单,少了一些对图像的处理。所以主要是用于练习思路和相关算子。只有用了,练了你在脑子里心才有收获。

边缘检测的步骤图解

代码

*直线找边
*清空屏幕,显式控制图像显示
dev_close_window ()
*读取图片
read_image (Image, 'printer_chip/printer_chip_01')
*根据 图片文件打开 图像窗口并获取窗口句柄
dev_open_window_fit_image (Image, 0, 0, -1, -1, WindowHandle)
dev_display (Image)

*******测量逻辑**********
*创建测量模型
create_metrology_model (MetrologyHandle)

*绘制测量直线
*WindowHandle 输入参数,窗口句柄
*Row1, Column1 测量直线的第一个点
*Row2, Column2 测量直线的第二个点
draw_line (WindowHandle, Row1, Column1, Row2, Column2)

*添加找边(找直线)工具,给定参数,显示过程卡尺的轮廓
*通用工具 这里可以通过 第二个参数指定具体的工具
*add_metrology_object_generic (MetrologyHandle, 'circle', Index2, 20, 5, 1, 30, [], [], Index3)

*circle 圆形工具
*add_metrology_object_circle_measure (MetrologyHandle, Row1, Column1, Row1, 20, 5, 1, 30, [], [], Index1)
*circle 椭圆工具
*add_metrology_object_ellipse_measure (MetrologyHandle, Row1, Column1, Index1, Index1, Index1, 20, 5, 1, 30, [], [], Index2)
*rectangle 矩形工具
*add_metrology_object_rectangle2_measure (MetrologyHandle, Row1, Column1, Index3, Index3, Index3, 20, 5, 1, 30, [], [], Index4)
*line 直线工具
*添加直线测量对象到模型
*函数参数:
*    MeasureHandle:输入测量模型的句柄;
*    RowBegin:输入测量区域行坐标起点;(测量直线的第一个点X坐标)
*    ColumnBegin:输入测量区域列坐标起点;(测量直线的第一个点Y坐标)
*    RowEnd:输入测量区域行坐标终点;(测量直线的第二个点X坐标)
*    ColumnEnd:输入测量区域列坐标终点;(测量直线的第二个点Y坐标)
*    MeasureLength1:输入垂直于边界的测量区域的一半长度;默认值:20,参考值:10,20,30;
*    MeasureLength2:输入与边界相切的测量区域的一半长度;默认值:5,参考值:3,5,10;
*    MeasureSigma:输入用于平滑的高斯函数的sigma;默认值:1,参考值:0.4,0.6,0.8,1.0,1.5,2.0,3.0,4.0,5.0,7.0,10.0;
*    MeasureThreshold:输入测量阈值;默认值:30,参考值:5.0, 10.0, 20.0, 30.0, 40.0, 50.0, 60.0, 70.0, 90.0, 110.0;
*    GenParamName:输入参数名称;参考: ‘distance_threshold’, ‘end_phi’, ‘instances_outside_measure_regions’, ‘max_num_iterations’, ‘measure_distance’, ‘measure_interpolation’, ‘measure_select’, ‘measure_transition’, ‘min_score’, ‘num_instances’, ‘num_measures’, ‘point_order’, ‘rand_seed’, ‘start_phi’;
*    GenParamValue:输入参数值;参考:1, 2, 3, 4, 5, 10, 20, ‘all’, ‘true’, ‘false’, ‘first’, ‘last’, ‘positive’, ‘negative’, ‘uniform’, ‘nearest_neighbor’, ‘bilinear’, ‘bicubic’;
*    Index:输出创建测量对象的索引值;
*原文链接:https://blog.csdn.net/qq_41225961/article/details/127668923
add_metrology_object_line_measure (MetrologyHandle, Row1, Column1, Row2, Column2, 20, 5, 1, 30, [], [], Index)
*在图像坐标中查询/获取测量对象的模型轮廓。
*函数参数:
*    Contours:输出测量对象测量区域的矩形XLD轮廓;
*    MetrologyHandle:输入测量模型的句柄;
*    Index:输出测量对象的索引;默认值:‘all’,参考:‘all’,0,1,2
*    Resolution:输入相邻轮廓点之间的距离;默认值:1.5,范围:Resolution>=1.192e-7
*原文链接:https://blog.csdn.net/qq_41225961/article/details/127957863
get_metrology_object_model_contour (Contour, MetrologyHandle, 0, 1.5)
*获取测量区域和测量模型的测量对象的边缘位置结果
*函数参数:
*    Contours:输出测量对象测量区域的矩形XLD轮廓;
*    MetrologyHandle:输入测量模型的句柄;
*    Index:输出测量对象的索引;默认值:‘all’,参考:‘all’,0,1,2
*    Transition:输入选择浅色/深色或深色/浅色边缘;默认值:‘all’,可选:all‘全部’,negative‘负面’,positive‘正面’;
*    Row:输出测量边缘的行坐标;
*    Column:输出测量边缘的列坐标;
*原文链接:https://blog.csdn.net/qq_41225961/article/details/127916050
get_metrology_object_measures (Contours, MetrologyHandle, 'all', 'all', Row, Column)
dev_set_color ('cyan')
dev_display (Contour)
dev_display (Contours)
*-------------------------

*执行找边(找直线)并显示结果
*测量并拟合测量模型中所有计量对象的几何形状
*函数参数:
*    Image:输入的测量图像;
*    MeasureHandle:输入测量模型的句柄;
apply_metrology_model (Image, MetrologyHandle)
*获取测量模型的测量结果
*函数参数:
*    MetrologyHandle:输入测量模型的句柄;
*    Index:输出测量对象的索引;默认值:‘all’,参考:‘all’,0,1,2;
*    Instance:输入测量对象的实例;默认值:‘all’,参考:‘all’,0,1,2;
*    GenParamName:输入参数名称;默认值:‘result_type’,参考:‘angle_direction’,‘result_type’,‘used_edges’;
*      (1)‘result_type’:如果GenParamName设置为’result_type’,则GenParamValue允许控制计量对象的返回方式和结果。
*      (2)‘angle_direction’:该参数确定由拟合产生的角度的旋转方向。将参数’angle_direction’设置为’正’,在物体的主轴和坐标系的水平轴之间以数学正方向(逆时针方向)指定角度。将参数’angle_direction’设置为’负’,在对象的主轴和坐标系的水平轴之间沿数学负方向(顺时针)指定角度。角度的结果以弧度返回。
*      默认值:‘正面’,参考:‘正面’,‘负面’;
*      (3)‘used_edges’:要查询实际用于拟合度量对象的边缘点,可以选择以下GenParamValue值:
*        ‘行’:返回用于拟合度量对象的边的行坐标。
*        ‘列’:返回用于拟合度量对象的边的列坐标。
*        ‘振幅’:返回用于拟合度量对象的边缘的边缘幅度。
*    GenParamValue:输入参数值;默认值:‘all_param’,参考:‘all_param’, ‘score’, ‘true’, ‘false’, ‘row’, ‘column’, ‘amplitude’, ‘radius’, ‘phi’, ‘radius1’, ‘radius2’, ‘length1’, ‘length2’, ‘row_begin’, ‘column_begin’, ‘row_end’, ‘column_end’, ‘nrow’, ‘ncolumn’, ‘distance’, ‘x’, ‘y’, ‘x_begin’, ‘y_begin’, ‘x_end’, ‘y_end’, ‘nx’, ‘ny’, ‘positive’, ‘negative’
*      如果GenParamValue设置为’all_param’,则返回计量对象的所有测量参数。
*        对于圆,返回值是中心的坐标和圆的半径。顺序分别是[‘row’,‘column’,‘radius’]或[‘x’,‘y’,‘radius’]。
*        对于椭圆,返回值是中心的坐标,长轴’phi’的方向,较大半轴’radius1’的长度,以及椭圆的较小半轴’radius2’的长度。顺序分别是[‘row’,‘column’,‘phi’,‘radius1’,‘radius2’]或[‘x’,‘y’,‘phi’,‘radius1’,‘radius2’]。
*        对于一条线,返回该线的起点和终点。顺序是[‘row_begin’,‘column_begin’,‘row_end’,‘column_end’]或[‘x_begin’,‘y_begin’,‘x_end’,‘y_end’]
*        对于矩形,返回值是中心的坐标,主轴’phi’的方向,较大的半边’length1’的长度,以及矩形的较小半边’length2’的长度。顺序分别是[‘row’,‘column’,‘phi’,‘length1’,‘length2’]或[‘x’,‘y’,‘phi’,‘length1’,‘length2’]。
*    Parameter:输出结果值;
*原文链接:https://blog.csdn.net/qq_41225961/article/details/128021925
get_metrology_object_result (MetrologyHandle, 0, 'all', 'result_type', 'all_param', Parameter)
*查询(获取)测量对象的结果轮廓
*函数参数:
*    Contour:输出给定测量对象的结果轮廓;
*    MetrologyHandle:输入测量模型的句柄;
*    Index:输出测量对象的索引;默认值:‘all’,参考:‘all’,0,1,2;
*    Instance:输入测量对象的实例;默认值:‘all’,参考:‘all’,0,1,2;
*    Resolution:输入相邻轮廓点之间的距离;默认值:1.5,参考:Resolution >= 1.192e-7;
*原文链接:https://blog.csdn.net/qq_41225961/article/details/128031609
get_metrology_object_result_contour (Contour1, MetrologyHandle, 0, 'all', 1.5)

dev_set_line_width (3)

dev_set_color ('red')

dev_display (Contour1)
stop()
*清除句柄
clear_metrology_model (MetrologyHandle)

效果

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

express+mysql+vue,从零搭建一个商城管理系统5--用户注册

提示:学习express,搭建管理系统 文章目录 前言一、新建user表二、安装bcryptjs、MD5、body-parser三、修改config/db.js四、新建config/bcrypt.js五、新建models文件夹和models/user.js五、index.js引入使用body-parser六、修改routes/user.js七、启动项…

Linux------进程地址空间

目录 一、进程地址空间 二、地址空间本质 三、什么是区域划分 四、为什么要有地址空间 1.让进程以统一的视角看到内存 2.进程访问内存的安全检查 3.将进程管理与内存管理进行解耦 一、进程地址空间 在我们学习C/C的时候,一定经常听到数据存放在堆区、栈区、…

Linux shell:补充命令的使用

目录 一.导读 二.正文 三.结语 一.导读 上一篇介绍了脚本的简单概念以及使用,现在补充一些命令。 二.正文 目前处于全局目录,通过mkdir创建名我为day01的文件。 通过cd命令day01 切换至day01文件当中。 使用vim文本编辑器文件名(firstdir&…

Dledger部署RocketMQ高可用集群(9节点集群)

文章目录 🔊博主介绍🥤本文内容规划集群准备工作节点0配置(ip地址为192.168.80.101的机器)节点1配置(ip地址为192.168.80.102的机器)节点2配置(ip地址为192.168.80.103的机器)在所有…

基于springboot实现鞋类商品购物商城系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现鞋类商品购物商城系统演示 摘要 时代的变化速度实在超出人类的所料,21世纪,计算机已经发展到各行各业,各个地区,它的载体媒介-计算机,大众称之为的电脑,是一种特高速的科学仪器&#xf…

05|Mysql锁分类

1. 锁分类 1.1根据性能 乐观锁 ● 版本号 ● 读多场景 ● 第二次循环需要读取到最新的数据统计 示例 while{ // 1.调用方法获取当前版本号 getCurrentBalanceAndVersion(accountId); // 2.Java运算newBalance Balance 500; updateAccountBalance(account…

LVS+Keepalived高可用群集

一、Keepalived简介 Keepalived 软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务&…

低代码平台与MES:智能制造的新篇章

随着工业4.0和智能制造的兴起,企业对于生产过程的数字化、智能化需求日益迫切。传统的MES系统实施周期长、成本高,成为许多企业数字化转型的瓶颈。而低代码开发平台的出现为这一问题提供了新的解决思路。 一、万界星空科技低代码平台的优势: …

【项目管理】CMMI-质量保证过程

质量保证过程(PQA):通过质量保证活动,确保过程与产品满足过程、规程及相应的要求,确保问题得到关注与解决,使工作人员和管理者能够客观地了解过程与相关的工作产品。QA工程师应实施质量保证策划活动,客观地…

Leetcode—64. 最小路径和【中等】

2024每日刷题&#xff08;116&#xff09; Leetcode—64. 最小路径和 实现代码 class Solution { public:int minPathSum(vector<vector<int>>& grid) {int m grid.size();int n grid[0].size();vector<vector<int>> dp(m 1, vector<int&g…

代理ip并发是不是越大越好?为何对代理IP做出并发请求限制?

随着网络技术的不断发展&#xff0c;代理IP已成为许多人在上网时保护隐私和突破地域限制的重要手段。然而&#xff0c;在选择和使用代理IP时&#xff0c;有一个问题常常被人们提及&#xff1a;代理IP的并发数是不是越大越好&#xff1f;为何对代理IP做出并发请求限制&#xff1…

C++ 高频考点

1. C/C内存有哪几种类型&#xff1f; C中&#xff0c;内存分为5个区&#xff1a;堆(malloc)、栈(如局部变量、函数参数)、程序代码区&#xff08;存放二进制代码&#xff09;、全局/静态存储区&#xff08;全局变量、static变量&#xff09;和常量存储区&#xff08;常量&…

言语理解与表达-郭熙-01

1、听课小贴上 2、 言语理解与表达-题型分类&#xff08;章就是类&#xff09; 国考&#xff1a;40道题 时间建议&#xff1a;30分钟 目标正确率&#xff1a;80% 3、课程安排 4、第一章-片段阅读 看问题---> 带着问题读文段----> 确定选项 4.1 中心理解题 关联词&…

QT摄像头采集

主界面为显示框&#xff0c;两个下拉框&#xff0c;一个是所有相机&#xff0c;一个是相机支持的分辨率 系统根据UI界面自动生成的部分不再描述&#xff0c;以下为其他部分源码 widget.h #include <QWidget> #include <QMouseEvent> class QCamera; class QCamer…

osi模型,tcp/ip模型(名字由来+各层介绍+中间设备介绍)

目录 网络协议如何分层 引入 osi模型 tcp/ip模型 引入 命名由来 介绍 物理层 数据链路层 网络层 传输层 应用层 中间设备 网络协议如何分层 引入 我们已经知道了网络协议是层状结构,接下来就来了解了解下网络协议如何分层 常见的网络协议分层模型是OSI模型 和 …

Sentinel实战(待完善)

目录 服务雪崩 什么是服务雪崩 服务不可用原因 解决方案 技术选型对比 Sentinel 介绍 优点 核心概念 资源 规则 代码实战 API实现 SentinelResource注解埋点实现 服务雪崩 什么是服务雪崩 在服务调用链路中, 服务提供者不可用, 导致服务调用者不可用, 间接让上上游…

C++——类的6个默认成员函数

目录 类中的6个默认成员函数 构造函数 构造函数的特点 初始化列表 隐式类型转换 析构函数 拷贝构造函数 赋值重载 运算符重载 赋值重载 取地址重载 类中的6个默认成员函数 类中的6个默认成员函数根据不同的作用可以分为&#xff1a; 初始化和使用后清理&#xff1a;…

【vue】什么是虚拟Dom,怎么实现虚拟DOM,虚拟DOM一定更快吗

什么是虚拟Dom 虚拟 DOM 基于虚拟节点 VNode&#xff0c;VNode 本质上是一个对象&#xff0c;VDOM 就是VNode 组成的 废话&#xff0c;js 中所有的东西都是对象 虚拟DOM 为什么快&#xff0c;做了哪些优化 批量更新 多个DOM合并更新减少浏览器的重排和重绘局部更新 通过新VDO…

基于springboot+vue的保险信息网站(源码+论文)

文章目录 文章目录 前言 一、功能设计 二、功能实现 2.1 前台功能设计 2.1.1 网站首页 2.1.2 保险产品列表 2.1.3 留言板界面 2.1.4 产品查询界面 2.2后台管理设计 2.2.1 系统用户登录管理 三、库表设计 四、论文 前言 随着互联网的不断发展&#xff0c;现在人们获…

使用空闲电脑免费搭建一个私人的网盘

如果你也有一台空闲电脑&#xff0c;可以使用它来搭建一个私人的网盘。 这里使用的是飞梦云网盘&#xff1b; 服务端&#xff1a;下载 服务器文件使用hash校验进行储存&#xff0c;实现重复上传的文件秒传功能。 Fuse4Ui&#xff08;虚拟分区工具&#xff09;&#xff1a;下…
最新文章