【issue-halcon例程学习】measure_arc.hdev

例程功能

 检查倒角后铸件的细长孔之间的距离。

代码如下

read_image (Zeiss1, 'zeiss1')
get_image_size (Zeiss1, Width, Height)
dev_close_window ()
dev_open_window (0, 0, Width / 2, Height / 2, 'black', WindowHandle)
set_display_font (WindowHandle, 14, 'mono', 'true', 'false')
dev_display (Zeiss1)
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
* draw_circle (WindowHandle, Row, Column, Radius)
Row := 275
Column := 335
Radius := 107
AngleStart := -rad(55)
AngleExtent := rad(170)
dev_set_draw ('fill')
dev_set_color ('green')
dev_set_line_width (1)
get_points_ellipse (AngleStart + AngleExtent, Row, Column, 0, Radius, Radius, RowPoint, ColPoint)
disp_arc (WindowHandle, Row, Column, AngleExtent, RowPoint, ColPoint)
dev_set_line_width (3)
gen_measure_arc (Row, Column, Radius, AngleStart, AngleExtent, 10, Width, Height, 'nearest_neighbor', MeasureHandle)
disp_continue_message (WindowHandle, 'black', 'true')
stop ()
count_seconds (Seconds1)
n := 10
for i := 1 to n by 1measure_pos (Zeiss1, MeasureHandle, 1, 10, 'all', 'all', RowEdge, ColumnEdge, Amplitude, Distance)
endfor
count_seconds (Seconds2)
Time := (Seconds2 - Seconds1) / n
disp_continue_message (WindowHandle, 'black', 'true')
* stop ()
distance_pp (RowEdge[1], ColumnEdge[1], RowEdge[2], ColumnEdge[2], IntermedDist)
* dev_display (Zeiss1)
dev_set_color ('red')
* disp_circle (WindowHandle, RowEdge, ColumnEdge, RowEdge - RowEdge + 1)
disp_line (WindowHandle, RowEdge[1], ColumnEdge[1], RowEdge[2], ColumnEdge[2])
dev_set_color ('yellow')
disp_message (WindowHandle, 'Distance: ' + IntermedDist, 'image', 250, 80, 'yellow', 'false')
* dump_window (WindowHandle, 'tiff_rgb', 'C:\\Temp\\zeiss_result')
dev_set_line_width (1)
* disp_continue_message (WindowHandle, 'black', 'true')
stop ()
dev_clear_window ()

要点

  1. gen_measure_arc ——采用圆弧arc作为测量区域,这是和上个例程不同的地方;
    CenterRow :入参,圆弧中心的行坐标;
    CenterCol :入参,圆弧中心的纵坐标;
    Radius :入参,圆弧半径;
    AngleStart :入参,弧度的起始角)以弧度为单位);
    AngleExtent :入参,弧度的角范围(以弧度为单位);
    AnnulusRadius :入参,圆弧环形半径;
    Width :入参,待处理图像的宽度;
    Height :入参,待处理图像的高度;
    Interpolation :入参,插值的形式;
    MeasureHandle :出参,测量对象句柄;
  2. measure_pos——提取垂直于矩形或环形弧的直边;
    Image :入参,输入图片;
    MeasureHandle :入参,测量对象句柄;
    Sigma :入参,高斯模糊参数;
    Threshold :入参,最小边沿振幅;
    Transition :入参,亮/暗或暗/亮边缘;
    Select :入参,终点选择;
    RowEdge :出参,边缘的中心行值(纵坐标);
    ColumnEdge :出参,边缘的中心列值(横坐标);
    Amplitude :出参,边的边缘振幅(带符号);
    Distance :出参,连续边之间的距离;
  3. measure_pos返回的是一个数组,索引1为最小值,索引2为最大值,示例代码中用distance_pp取点计算了最短距离
	measure_pos (Zeiss1, MeasureHandle, 1, 10, 'all', 'all', RowEdge, ColumnEdge, Amplitude, Distance)distance_pp (RowEdge[1], ColumnEdge[1], RowEdge[2], ColumnEdge[2], IntermedDist)

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

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

相关文章

《代码之丑》学习笔记15——新需求破坏了代码,怎么办?

15 | 新需求破坏了代码,怎么办? 文章目录 15 | 新需求破坏了代码,怎么办?一次驳回的实现 一次定时提交的实现总结时刻 前面文章讲的所有坏味道都是告诉你如何在已有的代码中发现问题。不过你要明白,即便我们能够极尽所…

【STM32】USB程序烧录需要重新上电 软件复位方法

文章目录 一、问题二、解决思路2.1 直接插拔USB2.2 给芯片复位 三、解决方法3.1 别人的解决方法3.2 在下载界面进行设置 一、问题 最近学习STM32的USB功能,主要是想要使用虚拟串口功能(VCP),发现每次烧录之后都需要重新上电才可以…

FRRouting学习(一) 配置日志文件

以配置isis event事件日志为例 1、在配置之前,/var/log/frr路径下是没有文件的: 2、在vtysh config之下输入:log file /var/log/frr/isisd.log debugging 后面的debugging表示日志级别,可以根据自己修改 3、配置好了之后&#xf…

Operation

contents 服务器一、相关概念1.1 云服务器与实例1.2 关于域名解析延时与80端口1.3 关于备案1.4 关于SSL证书1.5 关于SSL证书的签发1.6 关于SSL证书的部署1.7 关于LNMP和LAMP1.8 关于bt面板 二、单服务器单一级域名多网站2.1 创建多个二级域名2.2 解析二级域名绑定到服务器上2.3…

基于SpringBoot Vue求职招聘系统

大家好✌!我是Dwzun。很高兴你能来阅读我,我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结,还为大家分享优质的实战项目,本人在Java项目开发领域有多年的经验,陆续会更新更多优质的Java实战项目&#x…

codeforces 1354B

思维题 题目链接 题目大意 给定一个只包含 1 , 2 , 3 1,2,3 1,2,3的字符串,输出包含 1 , 2 , 3 1,2,3 1,2,3最短字串的长度 思路 重点是三个字符的位置,我们用三个变量来定义三个位置,用一个指针遍历数组不断更新三个位置,每次…

工业设备管理系统:助力企业实现数字化转型

随着工业4.0和智能制造的快速发展,数字化转型已成为企业提升竞争力、适应市场变化的必然选择。工业设备管理系统作为数字化转型的关键组成部分,能够为企业提供实时监控、数据分析、预警和远程控制等功能,助力企业实现数字化转型的目标。 一、…

debian12.4配置

文章目录 debian12.4配置概述笔记将非root用户添加到sudo组更换国内源配置ssh的客户端访问关闭屏保END debian12.4配置 概述 在虚拟机中装了一个debian12.4, 想配置ssh客户端连接, 出了问题. 配置乱了, 还好长了个心眼, 做了快照. 发现2个问题: debian12.4默认安装完, 有ss…

mysql生成最近24小时整点时间临时表

文章目录 生成最近24小时整点生成最近30天生成最近12个月 生成最近24小时整点 SELECT-- 每向下推1行, i比上次减去1b.*, i.*,DATE_FORMAT( DATE_SUB( NOW(), INTERVAL ( -( i : i - 1 ) ) HOUR ), %Y-%m-%d %H:00 ) AS time FROM-- 目的是生成12行数据( SELECTa FROM( SELECT…

java实现.net中byte和int转化的方法:BitConverter.GetBytes【验证可用】

背景 今天改造.net的代码发现一个工具类在java中找不到对应的默认函数,索性自己写一个,验证可用。 1、整数转为字节数组 public static byte[] toByteArray(int value) { return new byte[] { (byte) ((value >> 24) & 0xFF), (byte) ((v…

LINUX服务之YUM仓库

1. YUM概述 YUM基于RPM包构建的软件更新机制 可以自动解决依赖关系 所有软件包由集中的YUM软件仓库提供 YUM支持软件源 搭建yum支持的的软件源主要有以下三种: 本地yum:file://… 网络yum,又分为HTTP服务器:http…

UE5.2、CesiumForUnreal实现加载GeoJson绘制单面

文章目录 前言一、实现目标二、实现过程1.实现原理2.数据读取3.三角剖分3.具体代码 4.蓝图测试 前言 UE5、CesiumForUnreal实现加载GeoJson绘制单面(Polygon)功能(StaticMesh方式) 一、实现目标 通过读取本地的Geojson数据&…

IP地址组成

一、简介 ​ IP地址由四段组成,每个字段是一个字节,即4个字节、 每个字节有8位,最大值是255(256:0~255),是全世界范围是唯一的 32 位(4个字节 * 8位)的标识符。 ​ IP地址由两部分组成&#x…

电商模特危机!谷歌最新模型Tryon Diffusion一键试衣,线上购物被革命

目录 前言 摘要 方法 结果展示 多人试穿同一件衣服 同一个人试穿不同的衣服 交互式试穿演示 与最先进方法的比较 总结分析 前言 谷歌的新AI模型TryOnDiffusion,直接解决了AI换装的两大难题——既保留衣服细节,又能随意换姿势。…

通过curl访问k8s集群获取证书或token的方式

K8S安全控制框架主要由下面3个阶段进行控制,每一个阶段都支持插件方式,通过API Server配置来启用插件。 1. Authentication(认证) 2. Authorization(授权) 3. Admission Control(准入控制&#…

大数据学习之Flink,Flink的安装部署

Flink部署 一、了解它的关键组件 客户端(Client) 作业管理器(JobManager) 任务管理器(TaskManager) 我们的代码,实际上是由客户端获取并做转换,之后提交给 JobManger 的。所以 …

【前端设计】card

欢迎来到前端设计专栏&#xff0c;本专栏收藏了一些好看且实用的前端作品&#xff0c;使用简单的html、css语法打造创意有趣的作品&#xff0c;为网站加入更多高级创意的元素。 html <!DOCTYPE html> <html lang"en"> <head><meta charset&quo…

一文让你了解UI自动化测试

测试都起什么作用 - 是项目的保险&#xff0c;但不是项目的救命草&#xff1b;测试无实际产出&#xff0c;但作用远大于实际产出&#xff1b;测试是从项目维度保证质量&#xff0c;而不是测试阶段。 UI自动化&#xff08;下面简称自动化&#xff09; - 基于UI进行自动功能测试…

IndexedDB-增增删改查示例

1. 增加数据 // 打开数据库 const dbName myDatabase; const request indexedDB.open(dbName, 1);// 数据库被新建或升级时创建对象存储空间 request.onupgradeneeded event > {const db event.target.result;const objectStore db.createObjectStore(customers, { ke…

C++ STL之stack的使用及模拟实现

文章目录 1. 介绍2. stack的使用3. 栈的模拟实现 1. 介绍 stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的插入与提取操作。 stack是作为容器适配器被实现的&#xff0c;容器适配器即是对特定类封装作…