Halcon 几何测量

文章目录

  • 算子
  • Halcon 计算两点之间的距离案例
  • Halcon 计算点到直线的距离
  • Halcon 计算点到区域的距离
  • Halcon 线到区域的距离
  • Halcon 线到线的距离

算子

distance_pp 两点之间的距离算子

distance_pp( : : Row1, Column1, Row2, Column2 : Distance)
Row1 点1的行坐标
Column1 点1的列坐标
Row2 点2的行坐标
Column2 点2的列坐标
Distance 输出的两点之间的距离

distance_pl 计算点到直线的距离

distance_pl( : : Row, Column, Row1, Column1, Row2, Column2 : Distance)
Row (input_control):点的行坐标。
Column (input_control):点的列坐标。
Row1 (input_control):直线上第一个点的行坐标。
Column1 (input_control):直线上第一个点的列坐标。
Row2 (input_control):直线上第二个点的行坐标。
Column2 (input_control):直线上第二个点的列坐标。
Distance (output_control):点到直线的距禇。

distance_pr 点到区域的距离

distance_pr(Region : : Row, Column : DistanceMin, DistanceMax)
Region (input_object):输入的区域对象。
Row (input_control):点的行坐标。
Column (input_control):点的列坐标。
DistanceMin (output_control):点到区域的最短距离。
DistanceMax (output_control):点到区域的最长距离。

distence_Ir 线到区域的距离

distance_lr(Region : : Row1, Column1, Row2, Column2 : DistanceMin, DistanceMax)
Region (input_object):输入的区域对象。
Row1 (input_control):直线上第一个点的行坐标。
Column1 (input_control):直线上第一个点的列坐标。
Row2 (input_control):直线上第二个点的行坐标。
Column2 (input_control):直线上第二个点的列坐标。
DistanceMin (output_control):直线到区域的最短距离。
DistanceMax (output_control):直线到区域的最长距离。

distance_ss 线到线的距离

distance_ss( : : RowA1, ColumnA1, RowA2, ColumnA2, RowB1, ColumnB1, RowB2, ColumnB2 : DistanceMin, DistanceMax)
RowA1 (input_control):线段的第一个点的行坐标。
ColumnA1 (input_control):线段的第一个点的列坐标。
RowA2 (input_control):线段的第二个点的行坐标。
ColumnA2 (input_control):线段的第二个点的列坐标。
RowB1 (input_control):线的第一个点的行坐标。
ColumnB1 (input_control):线的第一个点的列坐标。
RowB2 (input_control):线的第二个点的行坐标。
ColumnB2 (input_control):线的第二个点的列坐标。
DistanceMin (output_control):线段之间的最短距离。
DistanceMax (output_control):线段之间的最长距离。

distance_rr_min 轮廓区域的距离

distance_rr_min(Regions1, Regions2 : : : MinDistance, Row1, Column1, Row2, Column2)
Regions1 (input_object):待检查的区域轮廓。
Regions2 (input_object):待检查的区域轮廓。
MinDistance (output_control):轮廓之间的最短距离。
Assertion: 0 <= MinDistance (断言:最短距离大于等于0)
Row1 (output_control):Regions1 中轮廓上的行索引。
Column1 (output_control):Regions1 中轮廓上的列索引。
Row2 (output_control):Regions2 中轮廓上的行索引。
 Column2 (output_control):Regions2 中轮廓上的列索引。

Halcon 计算两点之间的距离案例

* Calculate the distance between two points
* 
dev_close_window ()
read_image (Image, 'mreut')
dev_open_window (0, 0, 512, 512, 'white', WindowID)
dev_display (Image)
dev_set_color ('black')
* 阈值处理,获取区域
threshold (Image, Region, 180, 255)
* dev_clear_window ()
dev_display (Region)
* 连通域联合
connection (Region, ConnectedRegions)
* 选择区域
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 10000, 100000000)
* 获取区域的的轮廓
get_region_contour (SelectedRegions, Rows, Columns)
RowPoint := 80
ColPoint := 250
NumberTuple := |Rows|
dev_set_color ('red')
dev_set_draw ('margin')
* Display a circle that represented one point
* 产生一个圆点
gen_circle (Circle, RowPoint, ColPoint, 10)
dev_display (Circle)
dev_set_color ('green')
* Calculate the distance between points of the contour
* of the selected region and the displayed point
for I := 1 to NumberTuple by 10
    * 绘制十字
    gen_cross_contour_xld (Cross, Rows[I], Columns[I], 6, 0.785398)
    * 产生直线
    gen_contour_polygon_xld (Contour, [Rows[I],RowPoint], [Columns[I],ColPoint])
    dev_set_color ('green')
    dev_display (Cross)
    dev_set_color ('white')
    dev_display (Contour)
    * 测量距离
    distance_pp (RowPoint, ColPoint, Rows[I], Columns[I], Distance)
    wait_seconds (0.02)
endfor

在这里插入图片描述

Halcon 计算点到直线的距离

在这里插入图片描述

* Calculate the distance between any points and one line
* 
dev_close_window ()
read_image (Image, 'mreut')
dev_open_window (0, 0, 512, 512, 'white', WindowID)
dev_display (Image)
dev_set_color ('black')
threshold (Image, Region, 180, 255)
dev_clear_window ()
dev_display (Region)
connection (Region, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 10000, 100000000)
get_region_contour (SelectedRegions, Rows, Columns)
RowLine1 := 5
ColLine1 := 300
RowLine2 := 300
ColLine2 := 400
NumberTuple := |Rows|
dev_set_color ('red')
disp_line (WindowID, RowLine1, ColLine1, RowLine2, ColLine2)
dev_set_color ('green')
* Calculate the distance between points of the contour
* of the selected region and the displayed line
for i := 1 to NumberTuple by 20
    disp_line (WindowID, Rows[i], Columns[i] - 2, Rows[i], Columns[i] + 2)
    disp_line (WindowID, Rows[i] - 2, Columns[i], Rows[i] + 2, Columns[i])
    distance_pl (Rows[i], Columns[i], RowLine1, ColLine1, RowLine2, ColLine2, Distance)
endfor

在这里插入图片描述

Halcon 计算点到区域的距离

在这里插入图片描述

* Calculate the distance between one point and one region
* 
dev_close_window ()
read_image (Image, 'mreut')
dev_open_window (0, 0, 512, 512, 'white', WindowID)
dev_set_color ('black')
threshold (Image, Region, 180, 255)
connection (Region, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 10000, 100000000)
RowB1 := 255
ColumnB1 := 255
dev_clear_window ()
dev_display (SelectedRegions)
dev_set_color ('red')
* Calculate the distance between any points and a region
for i := 1 to 360 by 1
    RowB2 := 255 + sin(rad(i)) * 200
    ColumnB2 := 255 + cos(rad(i)) * 200
    disp_line (WindowID, RowB1, ColumnB1, RowB2, ColumnB2)
    distance_pr (SelectedRegions, RowB2, ColumnB2, DistanceMin, DistanceMax)
endfor

在这里插入图片描述

Halcon 线到区域的距离

在这里插入图片描述

* Calculate the distance between one line and one region
* 
dev_close_window ()
read_image (Image, 'fabrik')
dev_open_window (0, 0, 512, 512, 'white', WindowID)
threshold (Image, Region, 180, 255)
connection (Region, ConnectedRegions)
* Select a region from image
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 5000, 100000000)
dev_clear_window ()
dev_set_color ('black')
dev_display (SelectedRegions)
Row1 := 100
Row2 := 400
for Col := 50 to 400 by 4
    distance_lr (SelectedRegions, Row1, Col + 100, Row2, Col, DistanceMin, DistanceMax)
    *在线上
    if (DistanceMin <= 0)
        dev_set_color ('green')
    else
    *不在线上
        dev_set_color ('red')
    endif
    disp_line (WindowID, Row1, Col + 100, Row2, Col)
endfor

在这里插入图片描述

Halcon 线到线的距离

在这里插入图片描述

* Calculate the distances between line segments
* 
dev_close_window ()
dev_open_window (0, 0, 512, 512, 'white', WindowID)
dev_set_color ('black')
RowLine1 := 400
ColLine1 := 200
RowLine2 := 240
ColLine2 := 400
Rows := 300
Columns := 50
disp_line (WindowID, RowLine1, ColLine1, RowLine2, ColLine2)
dev_set_color ('red')
n := 0
* Calculate the distance between the line segments
* and the displayed single line
for Rows := 40 to 200 by 4
    distance_ss (Rows, Columns, Rows + n, Columns + n, RowLine1, ColLine1, RowLine2, ColLine2, DistanceMin, DistanceMax)
    if (DistanceMin == 0)
        dev_set_color ('green')
    else
        dev_set_color ('red')
    endif
    disp_line (WindowID, Rows, Columns, Rows + n, Columns + n)
    n := n + 8
endfor

在这里插入图片描述

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

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

相关文章

[ESP32]在Thonny IDE中,如何將MicroPython firmware燒錄到ESP32開發板中?

[ESP32 I MicroPython] Flash Firmware by Thonny(4.1.4) IDE 正常安裝流程&#xff0c;可參考上述影片。然而&#xff0c;本篇文章主要是紀錄安裝過程遇到的bug, 供未來查詢用&#xff0c;也一併供有需要的同好參考。 問題:安裝後&#xff0c;Thonny互動介面顯示一堆亂碼和co…

网安人必看!CISP家族顶流证书攻略

网络安全已成为当今的热门领域&#xff0c;证书在职业发展中的重要性不言而喻。但是&#xff0c;证书市场五花八门&#xff0c;选择适合自己的证书可是个大问题。别担心&#xff0c;今天我们就来聊聊CISP家族的几个热门认证&#xff0c;让你在网络安全领域的发展更加顺利&#…

ADI 配合 USRP 使用的相控阵天线 cn0566

相控阵天线 在这里插入图片描述

IDEA快捷键大全

提示&#xff1a; ① 主要记录我在使用 IDEA 开发的过程中用到的快捷键&#xff0c;可以提高开发速度。 ② 不一定要全部记住&#xff0c;主要是当一个参考文档&#xff0c;大家有一点印象&#xff0c;随时可以查看。 参考博客 > IntelliJ IDEA 快捷键说明大全&#xff08;官…

Springboot+vue的健身房管理系统(有报告)。Javaee项目,springboot vue前后端分离项目

演示视频&#xff1a; Springbootvue的健身房管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目 项目介绍&#xff1a; 本文设计了一个基于Springbootvue的前后端分离的健身房管理系统&#xff0c;采用M&#xff08;model&#xf…

WPF图表库LiveChart异常问题处理-System.ArgumentOutOfRangeException:指定的参数超出了有效值的范围

问题&#xff1a; 在使用liveChart处理一个以时间为X轴的曲线时&#xff0c;遇到一个报错&#xff1a;指定的参数超出了有效值的范围System.ArgumentOutOfRangeException:“Specified argument was out of the range of valid values. Arg_ParamName_Name” 指定的参数超出了有…

YOLOv5源码逐行超详细注释与解读(1)——项目目录结构解析

前言 前面简单介绍了YOLOv5的网络结构和创新点&#xff08;直通车&#xff1a;【YOLO系列】YOLOv5超详细解读&#xff08;网络详解&#xff09;&#xff09; 在接下来我们会进入到YOLOv5更深一步的学习&#xff0c;首先从源码解读开始。 因为我是纯小白&#xff0c;刚开始下…

EXCHANGE PARTITION 方法处理(挽救)大型分区表中的块损坏的步骤

当在巨大的表分区块&#xff08;例如 ORA-01578&#xff09;中发现损坏时&#xff0c;并且我们没有备份&#xff08;例如 RMAN、操作系统级别、导出或任何外部资源&#xff09;来恢复损坏&#xff0c;我们仍然可以尝试挽救使用 10231 事件处理表中的剩余数据&#xff08;由于跳…

扩展学习|商业智能和大数据分析的研究前景(比对分析)

文献来源&#xff1a; Liang T P , Liu Y H .Research Landscape of Business Intelligence and Big Data analytics: A bibliometrics study[J].Expert Systems with Applications, 2018, 111(NOV.):2-10.DOI:10.1016/j.eswa.2018.05.018. 信息和通信技术的快速发展导致了数字…

养老院|基于Springboot的养老院管理系统设计与实现(源码+数据库+文档)

养老院管理系统目录 目录 基于Springboot的养老院管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、老人信息管理 2、家属信息管理 3、公告类型管理 4、公告信息管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设选…

西瓜书读书笔记整理(十二) —— 第十二章 计算学习理论(下)

第十二章 计算学习理论&#xff08;下&#xff09; 12.4 VC 维&#xff08;Vapnik-Chervonenkis dimension&#xff09;12.4.1 什么是 VC 维12.4.2 增长函数&#xff08;growth function&#xff09;、对分&#xff08;dichotomy&#xff09;和打散&#xff08;shattering&…

【Linux系统】文件系统和软硬链接

前言 之前的博客介绍过了打开的文件是如何被操作系统管理起来的&#xff0c;但是绝大多数文件是没有被打开的&#xff0c;静静地躺在磁盘上。 这些文件也应该要被操作系统管理起来&#xff0c;以方便系统快速地在磁盘上查找它们&#xff0c;进而加载到内存。 这套管理方式就…

vue使用json格式化

安装 npm i bin-code-editor -S // Vue2 npm install vue-json-viewer --save 在main.js引用 //引入bin-code-editor相关插件和样式 import CodeEditor from bin-code-editor; import bin-code-editor/lib/styles/index.css; import JsonViewer from vue-json-viewer //vue使用…

golang开源的可嵌入应用程序高性能的MQTT服务

golang开源的可嵌入应用程序高性能的MQTT服务 什么是MQTT&#xff1f; MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是一种轻量级的、开放的消息传输协议&#xff0c;设计用于在低带宽、高延迟或不可靠的网络环境中进行通信。MQTT最初由IBM开发&#xf…

python webdriver 测试框架数据驱动json文件驱动的方式

简介&#xff1a; 数据驱动excel驱动方式,就是数据配置在excel里面&#xff0c;主程序调用的时候每次用从excel里取出的数据作为参数&#xff0c;进行操作&#xff0c; 需要掌握的地方是对excel的操作&#xff0c;要灵活的找到目标数据 测试数据.xlsx: 路径-D:\test\0627 E…

产品原型图设计规范大全

目前&#xff0c;市场上许多产品经理或设计师都在使用一些优秀的原型设计规范&#xff0c;这些规范几乎涵盖了原型设计的许多方面。一套好的、完整的原型设计规范可以统一产品设计风格&#xff0c;检验产品的可用性&#xff0c;有效提高产品经理绘制原型图的效率&#xff0c;更…

力扣238. 除自身以外数组的乘积(前后缀和)

Problem: 238. 除自身以外数组的乘积 文章目录 题目描述思路复杂度Code 题目描述 思路 思路1&#xff1a; 1.先求取数组的包括当前下标值得前后缀乘积&#xff08;利用两个数组记录下来分别为leftProduct和rightProduct&#xff09; 2.当求取一个下标为i的数组中的元素&#x…

构建基于Flask的跑腿外卖小程序

跑腿外卖小程序作为现代生活中的重要组成部分&#xff0c;其技术实现涉及诸多方面&#xff0c;其中Web开发框架是至关重要的一环。在这篇文章中&#xff0c;我们将使用Python的Flask框架构建一个简单的跑腿外卖小程序的原型&#xff0c;展示其基本功能和实现原理。 首先&…

linux --中断管理 -- irq的自动探测机制

irq自动探测机制 如果一个设备的驱动程序无法确定它说管理的设备的软件中断号irq&#xff0c;此时设备驱动程序可以使用irq的自动探测机制来获取其正在使用的irq。 使用自动探测机制的条件 内核与驱动&#xff0c;必须共同努力才能完成只限于非共享中断的情况 探测前&#…

如何查看某一页面在在谷歌有哪些关键词

随着跨境贸易的不断发展&#xff0c;谷歌SEO也被越来越多的人群所了解&#xff0c;所接受。我们在日常操作SEO的时候&#xff0c;往往都会远见这样的事情&#xff0c;那就是自己网站的某一个页面原本只是简单的承载着某一个关键词&#xff0c;但是随着时间的推移&#xff0c;这…