Halcon例程分析6:圆弧测量工具

您所在的位置:网站首页 arc怎么求角度 Halcon例程分析6:圆弧测量工具

Halcon例程分析6:圆弧测量工具

2023-08-28 06:21| 来源: 网络整理| 查看: 265

* 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

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

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

待测量图像

圆弧长度测量效果图

 

 



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3