测量橡胶密封圈的内外径尺寸

来源:互联网 发布:线切割软件编程 编辑:程序博客网 时间:2024/04/27 21:05
昨晚跟一位朋友的讨论橡胶密封圈的内外径尺寸测量的问题,因为还没有学到边缘检测和测量的具体知识,只能不够系统的先找算子,拼拼凑凑算是初步解决啦。
把问题、代码和结果分享给大家。
问题:测量出橡胶密封圈的内外径尺寸,如图:


代码:读图→边缘检测→计算边缘数量→测量圆半径→输出

read_image(Image,'F:/Halcon test/measuring/lunkuo4.jpg')读图get_image_size(Image, Width, Height)dev_open_window (0, 0, Width, Height, 'black', WindowHandle)获得窗口大小edges_sub_pix(Image, Edges, 'canny', 1, 20, 40)边缘检测,阈值范围20-40count_obj(Edges, Number)计算边缘数量set_display_font (WindowHandle, 12, 'mono', 'true', 'false')dev_display(Edges)dev_display(Image)for i := 1 to Number by 1循环边缘数量select_obj(Edges, ObjectSelected, i)选择第i个边缘fit_circle_contour_xld(ObjectSelected, 'algebraic', -1, 0, 0, 3, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder)gen_circle_contour_xld(ContCircle, Row, Column, Radius, 0, 6.28318, 'positive', 1)圆的测量,圆心,半径dev_set_color ('cyan')dev_display (ContCircle)Row2 := Row+Radius*sin(rad(-45))Column2 := Column+Radius*cos(rad(-45))set_tposition (WindowHandle, Row2 -35, Column2 +5)disp_arrow (WindowHandle, Row, Column, Row+Radius*sin(rad(-i*20)), Column+Radius*cos(rad(-i*20)), 2)画箭头disp_message (WindowHandle, 'R' + i + ' = ' + Radius$'.4', 'window', Row+Radius*sin(rad(-i*20))-10, Column+Radius*cos(rad(-i*20))+10, 'red', 'false')输出半径数值endfor




代码复制黏贴可测试