Halcon卡尺测量

2023-11-10

*halcon之机器视觉测量-卡尺测量
read_image (ImageModel, 'image.png')
get_image_size (ImageModel, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
dev_display (ImageModel)
dev_set_draw ('margin')
dev_set_color ('yellow')


*测量窗口制作
*左边测量直线
draw_line (WindowHandle, HoriLeftBeginRowMode, HoriLeftBeginColumnMode, HoriLeftEndRowMode, HoriLeftEndColumnMode)
gen_region_line (HoriLeftLinesMode, HoriLeftBeginRowMode, HoriLeftBeginColumnMode, HoriLeftEndRowMode, HoriLeftEndColumnMode)
dev_display (HoriLeftLinesMode)

*右边测量直线
draw_line (WindowHandle, HoriRightBeginRowMode, HoriRightBeginColumnMode, HoriRightEndRowMode, HoriRightEndColumnMode)
gen_region_line (HoriRightLinesMode, HoriRightBeginRowMode, HoriRightBeginColumnMode, HoriRightEndRowMode, HoriRightEndColumnMode)
dev_display (HoriRightLinesMode)

stop()

*创建形状模板*
*画矩形
draw_rectangle2 (WindowHandle, Row, Column, Phi, Length1, Length2)
*生成矩形
gen_rectangle2 (Rectangle, Row, Column, Phi, Length1, Length2)
*剪切矩形区域图像
reduce_domain (ImageModel, Rectangle, ImageReduced)
*创建形状模型
create_shape_model (ImageReduced, 'auto', 0, rad(360), 'auto', 'none', 'use_polarity', 30, 10, ModelID)
*create_shape_model_xld (SelectedContoursModel, 'auto', rad(0), rad(90), 'auto', 'auto', 'ignore_local_polarity', 3, ModelID)
*在搜索图像中搜索模版
find_shape_model (ImageModel, ModelID, 0, rad(360), 0.4, 1, 0, 'least_squares', 0, 0.7, ModelRow, ModelColumn, ModelAngle, ModelScore)
*获取模板轮廓
get_shape_model_contours (ShapeModel, ModelID, 1)

stop ()

*测量模型创建*
*创建测量模型
create_metrology_model (MetrologyHandle)
*设置测量对象的图像大小
set_metrology_model_image_size (MetrologyHandle, Width, Height)
*添加测量直线对象到测量模型中
Line1 := [HoriLeftBeginRowMode, HoriLeftBeginColumnMode, HoriLeftEndRowMode, HoriLeftEndColumnMode]
Line2 := [HoriRightBeginRowMode, HoriRightBeginColumnMode, HoriRightEndRowMode, HoriRightEndColumnMode]
add_metrology_object_generic (MetrologyHandle, 'line', [Line1,Line2], 20, 5, 1, 20, [], [], MetrologyLine)   
*获取测量模型里的模型轮廓
get_metrology_object_model_contour (ModelContour, MetrologyHandle, 'all', 1.5)
*获取测量模型里的测量区域
get_metrology_object_measures (MeasureContour, MetrologyHandle, 'all', 'all', Row, Column)
*显示图像及轮廓
dev_display (ImageModel)
dev_display (ModelContour)
设置测量对象的参考坐标系原点在模板坐标位置
set_metrology_model_param (MetrologyHandle, 'reference_system', [ModelRow, ModelColumn,0])
stop()

*开始测试*
*加载图像
* Image Acquisition 01: Code generated by Image Acquisition 01
ImageFiles := []
ImageFiles[0] := 'image/dip_switch_model.png'
ImageFiles[1] := 'image/dip_switch_training_01.png'
ImageFiles[2] := 'image/dip_switch_training_02.png'
ImageFiles[3] := 'image/dip_switch_training_03.png'
ImageFiles[4] := 'image/dip_switch_training_04.png'
ImageFiles[5] := 'image/dip_switch_training_05.png'
ImageFiles[6] := 'image/dip_switch_training_06.png'
ImageFiles[7] := 'image/dip_switch_training_07.png'
ImageFiles[8] := 'image/dip_switch_training_08.png'
ImageFiles[9] := 'image/dip_switch_training_09.png'
ImageFiles[10] := 'image/dip_switch_training_10.png'
ImageFiles[11] := 'image/dip_switch_training_11.png'
ImageFiles[12] := 'image/dip_switch_training_12.png'

for Index := 0 to |ImageFiles| - 1 by 1
        *设置区域填充模式
        dev_set_draw ('fill')
        *读取图像
        read_image (Image, ImageFiles[Index])
        *显示图像
        dev_display (Image)
        *在搜索图像中寻找模板
        find_shape_model (Image, ModelID, 0, rad(360), 0.4, 1, 0, 'least_squares', 0, 0.7, SearchRow, SearchColumn, SearchAngle, SearchScore)
        *对齐测量模型
        align_metrology_model (MetrologyHandle, SearchRow, SearchColumn, SearchAngle)
        *测量并对测量区域拟合几何形状
        apply_metrology_model (Image, MetrologyHandle)
        *获取测量结果里的开始行坐标
        get_metrology_object_result (MetrologyHandle, MetrologyLine, 'all', 'result_type', 'row_begin', RowBegin)
        *获取测量结果里的开始列坐标
        get_metrology_object_result (MetrologyHandle, MetrologyLine, 'all', 'result_type', 'column_begin', ColBegin)
        *获取测量结果里的结束行坐标
        get_metrology_object_result (MetrologyHandle, MetrologyLine, 'all', 'result_type', 'row_end', RowEnd)
        *获取测量结果里的结束列坐标
        get_metrology_object_result (MetrologyHandle, MetrologyLine, 'all', 'result_type', 'column_end', ColEnd)
        *获取测量区域
        get_metrology_object_measures (SearchContour, MetrologyHandle, 'all', 'all', Row, Column)
        *获取测量结果轮廓
        get_metrology_object_result_contour (MeasuredLines, MetrologyHandle, 'all', 'all', 1.5)
        *显示测量区域和测量结果轮廓
        dev_set_color ('green')
        dev_display (SearchContour)
        dev_set_color ('blue')
        dev_display (MeasuredLines)

        
        *距离计算*
        *生成两个直线对象并连接起来
        gen_empty_obj (RegionLine)
        for i:=0 to |RowBegin|-1 by 1
                gen_region_line (Lines, RowBegin[i], ColBegin[i], RowEnd[i], ColEnd[i])
                concat_obj (RegionLine, Lines, RegionLine)
        endfor
        
        *计算两个直线对象之间的距离
        select_obj (RegionLine, FirstLine, 1)
        select_obj (RegionLine, SecondLine, 2)
        distance_rr_min (FirstLine,SecondLine, MinDistance, Row1, Column1, Row2, Column2)
        *在屏幕坐上方0100位置数值长度值
        dev_set_color ('green')
        set_tposition (WindowHandle, 0, 100)
        write_string (WindowHandle, '两条直线之间的距离='+MinDistance)
        stop()
      
endfor
stop()
*清除测量模型
clear_metrology_model (MetrologyHandle)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Halcon卡尺测量 的相关文章

随机推荐

  • 元宇宙沉浸式互动展示系统开发定制平台

    2021年公认是元宇宙元年 今年元宇宙的发展更是得到了社会各界的广泛关注 元宇宙首次被写入地方 十四五 规划 各大数字科技巨头 政府机构也都纷纷入局元宇宙 随着元宇宙的变现能力和商业化前景已经得到证实 元宇宙概念与广告营销业的深度融合优势开
  • 计算机毕业设计ssm基于java语言的自行车在线租赁系统k22rh9 (附源码)轻松不求人

    项目运行 环境配置 Jdk1 8 Tomcat7 0 Mysql HBuilderX Webstorm也行 Eclispe IntelliJ IDEA Eclispe MyEclispe Sts都支持 项目技术 ssm mybatis Ma
  • Java 自定义注解及使用场景

    Java自定义注解一般使用场景为 自定义注解 拦截器或者AOP 使用自定义注解来自己设计框架 使得代码看起来非常优雅 本文将先从自定义注解的基础概念说起 然后开始实战 写小段代码实现自定义注解 拦截器 自定义注解 AOP 一 什么是注解 A
  • 小程序+uniapp部分问题

    微信小程序showModal中content的内容如何换行 在需要换行的位置加上 r n 即可实现内容的换行 注 微信开发者工具可能看不到效果 但是真机实测是会换行的 wx showModal title 提示 content 未达到最低使
  • 百度云加速配置SSL证书方法

    配置前提 确保域名在HTTP普通网站可以正常打开 并且域名已经解析到百度加速 一 登录沃通数字证书商店下载 SSL证书文件并且解压 选择nginx文件夹 百度云加速只需要用到nginx文件夹 二 登录百度云加速 https su baidu
  • 子系统 Arch Linux

    去年 还是前年不记得了 微软推出了子系统 官方支持的是Ubuntu 由于我对Ubuntu这样的重量级Linux没啥好感 当时只是安装了一下 就没怎么玩了 现在又有机会重新安装了Win10 去年在Arch社区得知Github上有关于Arch子
  • java Json转string方法

    Java中Json转string方法 Java利用Json lib包进行json对象转换成string JSONArray转换string方法实例 public static void main String args throws JSO
  • springboot配置类编写

    以配置一个DataSource为例 其他的类似 接下来我就给大家介绍具体步骤 1 首先写两个类 并添加注解 ConfigurationProperties 表明这是一个配置类 其中一个为dataSource的配置类 一个为jdbc的配置类
  • 为什么docker容器启动不了?

    sudo docker run d centos bin bash创建容器之后 使用docker ps a 发现容器已经停止 再使用docker start id 启动容器之后 观察ps a 的操作时间 发现容器其实已经启动过 但是马上就停
  • wsl 修改 hostname

    我在使用Windows 的 wsl 功能的时候发现在默认情况下 wsl 的 hostname 是和当前 windows 系统的主机名称保持一致的 当我尝试使用 hostname 修改主机名时 发现并不能完全修改 在重新进入后又会恢复成原来的
  • IDEA忽略文件,防止git提交不想提交的文件的探索

    使用IDEA开发有 一段时间了 从陌生到熟悉的过程算是很平稳的度过 感谢IntelliJ IDEA交流群 群号244908708 里面的群友对我提供的帮助 感谢群主的github上面提供的资料 这篇文章是探索git忽略文件提交的一些方面的研
  • 麦克风音频服务器未响应,耳机和麦克风都没坏,插上电脑后为什么不能语音聊天?...

    耳机和麦克风都没坏 插上电脑后为什么不能语音聊天 以下文字资料是由 历史新知网www lishixinzhi com 小编为大家搜集整理后发布的内容 让我们赶快一起来看一下吧 耳机和麦克风都没坏 插上电脑后为什么不能语音聊天 先确认你的电脑
  • 第十七章 Chisel基础——数据类型

    一 Chisel的常见问题 在学习Chisel前 应该熟悉一些常见问题 这些问题在编写Chisel的任何时候都应该牢记 Chisel是寄宿在Scala里的语言 所以它本质还是Scala 为了从Chisel转变成Verilog 语言开发人员开
  • 径向基神经网络(RBF)回归预测MATLAB实现超详细

    在机械学习算法的过程中 我们常用到一种神经网络就是径向基神经网络 这是一种使用径向基函数作为激活函数的人工神经网络 这种神经网络也有很多用途 比如时间序列预测 数据分类以及回归预测等等 今天主要讲解径向基神经网络在MATLAB的实现过程 对
  • 003_linux驱动之_file_operations函数

    一 解析file operations函数 解析002 linux驱动之 register chrdev注册字符设备中的问题 二 file operations结构原型 使用举例 三 从上面的原型可以看出file operations函数有
  • 不走索引的情况

    1 条件字段选择性弱 查出的结果集较大 不走索引 2 where条件等号两边字段类型不同 不走索引 3 优化器分析的统计信息陈旧也可能导致不走索引 4 索引字段 is null 不走索引 5 对于count 当索引字段有not null约束
  • nn.Conv2d——二维卷积运算解读

    PyTorch学习笔记 nn Conv2d 二维卷积运算解读 nn Conv2d 二维卷积运算 代码案例 一般用法 输出卷积运算的参数 填充方式 零填充 镜像填充 复制填充 循环填充 官方文档 nn Conv2d 二维卷积运算 torch
  • Could not load 'clearsilver-jni' java.library.path = out/host/linux-x86/lib make: *** [out/target/common/docs/api-stubs-timestam

    Could not load clearsilver jni java library path out host linux x86 lib make out target common docs api stubs timestamp
  • 关于C++代码中中文字符的错误或者乱码的解决办法

    在文件头加入下面这段内容 pragmaexecution character set utf 8 如果还不行就同时用Notepad 等一些工具转换成utf 8的编码 如不出意外已经解决问题了
  • Halcon卡尺测量

    halcon之机器视觉测量 卡尺测量 read image ImageModel image png get image size ImageModel Width Height dev open window 0 0 Width Heig