*  Example for the application of the measure package
* including a lot of visualization operators
*
*读取图像
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)
*生成圆弧测量工具
*前五个参数是圆弧的位置相关输入参数
*第六个参数是需要生成的测量圆弧工具的宽度,即一个圆弧区域的宽度,在这里整个测量区域是半径-10到半径+10这个区域范围
*第七第八个参数是图像宽高
*第九个参数是插值方式,这里是用最近邻插值方式
*最后一个输出参数是测量工具的句柄,后面需要用到这个测量工具都通过句柄引用
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 1*第一个参数是输入图像*第二个参数是测量工具句柄值*第三个参数是高斯平滑的sigma值*第四个参数是阈值*第五个参数是测量的边缘方向选择参数,'all'是选择所有的边缘,'negative'只选择白到黑的边缘,'positive'只选择黑到白的边缘*这里两个边缘都选择总共选择出4个像素差值边缘*第六个参数是是否选择端点,这里选择所有端点*第七个参数是输出的边缘点行坐标值*第八个参数是输出的边缘点列坐标值*第九个参数是输出的边缘点最大幅值*第十个参数是输出的相邻边缘之间的距离measure_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 ()

打开halcon,按下ctrl+e打开halcon自带例程。工业领域->机械行业->measure_arc.hdev

这个例程是用圆弧测量工具测量圆弧的长度,较短的一段圆弧可以大约等长与直线,但大圆弧是不能等长于直线的,比如历程中两个凹坑处的圆弧长度这里同样是可以测量出来的。

圆弧测量的原理与矩形测量的原理是一样的,把圆弧区域用插值的方式转换到矩形区域空间,在矩形主方向上做灰度值差分,得到差分图像,找出差分值大于设定阈值的点位置。

待测量图像

圆弧长度测量效果图

Halcon例程分析6:圆弧测量工具相关推荐

  1. Halcon例程分析8:投影变换矫正倾斜图像

    打开halcon,按下ctrl+e打开halcon自带例程.方法->二维码识别->2d_data_codesrectify_symbol.hdev *This program demons ...

  2. Halcon例程学习:adaption_ocv.hev(光学字符检测)

    **************************************************************************************************** ...

  3. halcon例程解析:检查饼干的质量——check_hazelnut_wafers

    halcon例程解析:检查饼干的质量--check_hazelnut_wafers 1. 效果展示 2. 思路分析 2.1自动阈值分割 2.2 形态学处理 2.3 计算孔洞面积 2.4 计算矩形的形状 ...

  4. Halcon例程详解(激光三角系统标定)—— calibrate_sheet_of_light_calplate.hdev

    前言 1 激光三角测距 激光三角测距法原理很简单,是通过一束激光以一定的入射角度照射被测目标,激光在目标表面会产生漫反射,在另一角度利用透镜对反射激光汇聚成像,光斑成像在CCD(Charge-coup ...

  5. Halcon例程(基于多个标定图的单目相机标定)详解—— Camera_calibration_multi_image.hdev

    一.前言 在我的工业相机专栏里已经将相机标定涉及到的理论部分讲解完毕,为什么要标定以及标定要求出什么参数呢,用一个Halcon 例程来帮助理解. 这个例程是比较经典的标定程序,基本将标定过程讲的比较清 ...

  6. VB表格控件总览与例程分析

    一.表格控件总览: 在VB开发环境中,表格控件在界面开发元素中占有重要的地位.它不仅有外观整洁.表达形式规范的优点,而且更重要的是它较高的信息表现率(就是相对于其他控件来说能够表达更多的信息),随着信 ...

  7. Halcon例程学习:print_check.hev(光学字符检测)

    **************************************************************************************************** ...

  8. 一文弄懂halcon例程:rim.hdev

    一文弄懂halcon例程:rim.hdev 打怪的路上总是无聊的,但是也不能不打啊,我自己现在也在每天打怪升级呢.昨天就因为一个问题,我到视觉群问里面的大牛,结果,他不帮我解答,他不告诉我怎么解决就算 ...

  9. Hi3518EV300-venc例程分析

    Hi3518EV300-venc例程分析 前言: MAPI 层业务流程 VENC录像 流程: 1.定义要绑定的VCap,VProc,VENC变量 2.start vcap 3.start vproc( ...

最新文章

  1. Linux下 su命令与su - 命令的区别
  2. Spring(IOC+AOP)
  3. Confluence 6 使用 WebDAV 客户端来对页面进行操作
  4. 3.git版本控制-管理修改、撤销、删除
  5. DBCP针对不同数据库的validationQuery
  6. 抖音正考虑赴美IPO?字节跳动回应:消息不实
  7. python创意编程是什么_Python趣味创意编程
  8. 【干货】如何删除“自豪地采用WordPress“
  9. memcached+magent实现负载
  10. Android Studio导入从Github下载的源码
  11. 金蝶K3老单新增自定义菜单按钮
  12. nyoj Splits the string 749
  13. 智能汽车“增量部件”争夺战(一):以华为海思为样榜,比亚迪蔚来们的漫漫造芯路
  14. 计算机软考网络工程师中级多少分过,计算机软考网络工程师中级多少分过
  15. 动手写一个二叉平衡树
  16. jwt token注销_JWT 管理用户登录时,都需要把 token 存数据库里,判断用户登出时删除吗?...
  17. 如何查找一篇论文的源代码
  18. QT QtableView操作详解
  19. 红外光波长对血氧饱和度的影响
  20. 使用163网易相册的朋友注意啦!

热门文章

  1. amd 服务器cpu型号怎么看,Intel还是AMD?10个问题看懂CPU该如何选
  2. 信息管理毕业设计如何选题
  3. 荒野行动 pc android,荒野行动pc端多大内存_荒野行动电脑版配置要求-APK8安卓网...
  4. 强化学习中on policy和off policy的区别-深度理解
  5. 【C++ Opencv】读写灰度图像,RGB图像的某个像素、修改像素值、图像取反(源码+API)
  6. 计算机应用基础上机试题及答案,计算机应用基础上机试题及答案.docx
  7. linux创建用户、用户组、授权读写权限等权限相关常用命令
  8. MQTT自动化测试脚本
  9. XPT24046AD/DA 转换器
  10. 笑话——————吃饭的先吐出嘴里的东西。。。。