HALCON示例程序measure_metal_part_first_example.hdev通过拟合边缘进行尺寸测量

HALCON示例程序measure_metal_part_first_example.hdev通过拟合边缘进行尺寸测量

示例程序源码(加注释)

  • 关于显示类函数解释
    dev_update_off ()
    read_image (Image, ‘metal-parts/metal-parts-01’)
    get_image_size (Image, Width, Height)
    dev_close_window ()
    dev_open_window (0, 0, Width, Height, ‘light gray’, WindowID)
    dev_set_part (0, 0, Height - 1, Width - 1)
    dev_set_line_width (3)
    dev_set_color (‘white’)
    dev_set_draw (‘margin’)
    dev_display (Image)
    set_display_font (WindowID, 16, ‘mono’, ‘true’, ‘false’)
    stop ()
    dev_set_draw (‘fill’)
  • 二值化
    threshold (Image, Region, 100, 255)
  • 求取区域中心
    area_center (Region, AreaRegion, RowCenterRegion, ColumnCenterRegion)
  • 使用椭圆拟合求取区域角度
    orientation_region (Region, OrientationRegion)
    dev_display (Region)
    disp_message (WindowID, ‘Center Row: ’ + RowCenterRegion′.5′,′window′,20,10,′white′,′false′)dispmessage(WindowID,′Area:′+AreaRegion+′pixel′,′window′,20,300,′white′,′false′)dispmessage(WindowID,′CenterColumn:′+ColumnCenterRegion'.5', 'window', 20, 10, 'white', 'false') disp_message (WindowID, 'Area: ' + AreaRegion + ' pixel', 'window', 20, 300, 'white', 'false') disp_message (WindowID, 'Center Column: ' + ColumnCenterRegion.5,window,20,10,white,false)dispmessage(WindowID,Area:+AreaRegion+pixel,window,20,300,white,false)dispmessage(WindowID,CenterColumn:+ColumnCenterRegion’.5’, ‘window’, 60, 10, ‘white’, ‘false’)
    disp_message (WindowID, ‘Orientation: ’ + OrientationRegion$’.3’ + ’ rad’, ‘window’, 60, 300, ‘white’, ‘false’)
    dev_set_color (‘gray’)
    disp_cross (WindowID, RowCenterRegion, ColumnCenterRegion, 15, 0)
    disp_arrow (WindowID, RowCenterRegion, ColumnCenterRegion, RowCenterRegion - 60 * sin(OrientationRegion), ColumnCenterRegion + 60 * cos(OrientationRegion), 2)
    stop ()
  • 提取边缘
    edges_sub_pix (Image, Edges, ‘canny’, 0.6, 30, 70)
  • 分割边缘
    segment_contours_xld (Edges, ContoursSplit, ‘lines_circles’, 6, 4, 4)
    dev_clear_window ()
    dev_set_colored (12)
    dev_display (ContoursSplit)
    stop ()
    dev_open_window (0, round(Width / 2), (535 - 225) * 2, (395 - 115) * 2, ‘black’, WindowHandleZoom)
    dev_set_part (round(115), round(225), round(395), round(535))
    set_display_font (WindowHandleZoom, 18, ‘mono’, ‘true’, ‘false’)
    count_obj (ContoursSplit, NumSegments)
    dev_display (Image)
    NumCircles := 0
    RowsCenterCircle := []
    ColumnsCenterCircle := []
    disp_message (WindowHandleZoom, 'Circle radii: ', ‘window’, 120, 230, ‘white’, ‘false’)
for i := 1 to NumSegments by 1select_obj (ContoursSplit, SingleSegment, i)* 获取xld轮廓属性,是圆形椭圆还是直线get_contour_global_attrib_xld (SingleSegment, 'cont_approx', Attrib)if (Attrib == 1)NumCircles := NumCircles + 1* 拟合圆形fit_circle_contour_xld (SingleSegment, 'atukey', -1, 2, 0, 5, 2, Row, Column, Radius, StartPhi, EndPhi, PointOrder)* 绘制圆形gen_circle_contour_xld (ContCircle, Row, Column, Radius, 0, rad(360), 'positive', 1)RowsCenterCircle := [RowsCenterCircle,Row]ColumnsCenterCircle := [ColumnsCenterCircle,Column]dev_display (ContCircle)disp_message (WindowHandleZoom, 'C' + NumCircles, 'window', Row - Radius - 10, Column, 'white', 'false')disp_message (WindowHandleZoom, 'C' + NumCircles + ': Radius = ' + Radius$'.4', 'window', 275 + NumCircles * 15, 230, 'white', 'false')endif
endfor
distance_pp (RowsCenterCircle[1], ColumnsCenterCircle[1], RowsCenterCircle[2], ColumnsCenterCircle[2], Distance_2_3)
disp_line (WindowHandleZoom, RowsCenterCircle[1], ColumnsCenterCircle[1], RowsCenterCircle[2], ColumnsCenterCircle[2])
disp_message (WindowHandleZoom, 'Distance C2-C3 = ' + Distance_2_3$'.4', 'window', 275 + (NumCircles + 3) * 15, 230, 'magenta', 'false')
distance_pp (RowsCenterCircle[0], ColumnsCenterCircle[0], RowsCenterCircle[2], ColumnsCenterCircle[2], Distance_1_3)
disp_line (WindowHandleZoom, RowsCenterCircle[0], ColumnsCenterCircle[0], RowsCenterCircle[2], ColumnsCenterCircle[2])
disp_message (WindowHandleZoom, 'Distance C1-C3 = ' + Distance_1_3$'.4', 'window', 275 + (NumCircles + 2) * 15, 230, 'yellow', 'false')
distance_pp (RowsCenterCircle[3], ColumnsCenterCircle[3], RowsCenterCircle[4], ColumnsCenterCircle[4], Distance_4_5)
disp_line (WindowHandleZoom, RowsCenterCircle[3], ColumnsCenterCircle[3], RowsCenterCircle[4], ColumnsCenterCircle[4])
disp_message (WindowHandleZoom, 'Distance C4-C5 = ' + Distance_4_5$'.4', 'window', 275 + (NumCircles + 4) * 15, 230, 'cyan', 'false')
stop ()

dev_set_window (WindowHandleZoom)
dev_close_window ()
dev_set_part (0, 0, Height - 1, Width - 1)
dev_update_window (‘on’)

处理思路

这个例子是主要讲解了使用xld边缘拟合测量圆的大小与相对位置的例子。

后记

大家有什么问题可以向我提问哈,我看到了第一时间回复,希望在学习的路上多多结交良师益友。

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

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

相关文章

简单实现仿某宝地址选择三级联动样式

内容简单介绍实现步骤第一步 找准方向第二步 开干总结还是题外话内容简单介绍 简单看一下须要实现的效果,如图: 实现步骤 第一步 找准方向 事实上就是想好要用recyclerview而不是listview。假设要问我recyclerview是什么的话。。 第二步 开干 首先须要先…

opencv双目测距实现

虽然最近注意力已经不可遏制地被神经科学、大脑记忆机制和各种毕业活动吸引过去了,但是还是觉得有必要把这段时间双目视觉方面的进展总结一下。毕竟从上一篇博文发表之后,很多同仁发E-mail来与我讨论,很多原来的疑团,也在讨论和一…

logback高级特性使用-异步记录日志

注意:该功能需要高版本才能支持,如1.0.11。AsyncAppender,异步记录日志。 工作原理: 当Logging Event进入AsyncAppender后,AsyncAppender会调用appender方法,append方法中在将event填入Buffer(这里选用的数…

Linux下c开发 之 线程通信(转)

1.Linux“线程”进程与线程之间是有区别的,不过Linux内核只提供了轻量进程的支持,未实现线程模型。Linux是一种“多进程单线程”的操作系统。Linux本身只有进程的概念,而其所谓的“线程”本质上在内核里仍然是进程。大家知道,进程…

HDU 1028 Ignatius and the Princess III

//强行递推。 xx[i][j]表示i数中第j个开头的组合种类。 /* 最终结果[i]为 sum of(xx[i][j]) (j from 1 to i); xx[i][j]sum of (xx[i-j][k]) (k from 1 to j); 例如 xx[10][4]xx[6][1]xx[6][2]xx[6][3]xx[6][4]; xx[6][1] 1; 6111111; xx[6][2]3; 6222, 62211, 621111; xx[…

HALCON示例程序measure_metal_part_id.hdev使用xld边缘拟合检测零件加工是否合格

HALCON示例程序measure_metal_part_id.hdev使用xld边缘拟合检测零件加工是否合格 示例程序源码(加注释) 关于显示类函数解释 dev_update_off () Imagefiles : [‘metal-parts/metal-part-model-01’,‘metal-parts/metal-parts-01’,‘metal-parts/meta…

编写批处理文件-------基础

第一、Windows bat 批处理文件 编写 如何编写批处理文件 批处理文件(batch file)包含一系列 DOS命令,通常用于自动执行重复性任务。 用户只需双击批处理文件便可执行任务,而无需重复输入相同指令。编写批处理文件非常简单&#xf…

主控芯片

主控芯片: 主控芯片里有310,320,3288,288,318,333,345,7501, 其中310是中星微发展比较早,比较成熟的芯片。在现在一般应用在水晶夹子之类的低端产品上。 3288也是低端芯片,318&…

MPEG2、H.263、H.264协议效率对比

[摘录]1.1 MPEG2、H.263、H.264协议效率对比ITUT中定义的双向视频通信协议族包括:H.320、H.323,这两个协议族中,包含了很多子协议,例如音频编码协议、视频编码协议等,其中视频编码包括:H.261、H.263、H.264…

WebService SOAP、Restful和HTTP(post/get)请求区别

web service(SOAP) Webservice的一个最基本的目的就是提供在各个不同平台的不同应用系统的协同工作能力。 Web service 就是一个应用程序,它向外界暴露出一个能够通过Web进行调用的API。 SOAP是一种简单基于xml的轻量协议,用户web…

Block的循环引用详解

1.首先我们创建了一个网络请求工具类 然后storyboard里面去创建了一个导航控制器 并且把它设置为初始控制器 然后拖入一个bar button --show--到自带的控制器 这个时候运行代码的结果是 x 显然这个时候没有造成循环引用 为什…

HALCON示例程序measure_pump.hdev螺纹孔位置与尺寸测量

HALCON示例程序measure_pump.hdev螺纹孔位置与尺寸测量 示例程序源码(加注释) 关于显示类函数解释 dev_update_var (‘off’) dev_update_off () read_image (Image, ‘pumpe’) get_image_size (Image, Width, Height) dev_close_window () dev_open_…

计算机视觉和图形学中的摄像机内参数矩阵详解

在计算机视觉和图形学中都有“摄像机内参数矩阵”这个概念,其含义大致相同,但在实际使用过程中,这两个矩阵却相差甚远。在增强现实中,为了使计算机绘制的虚拟物体和真实环境图像对其,需要令虚拟摄像机的内参数和真实摄…

c#和html方法互调

具体见连接:https://www.cnblogs.com/zeroLove/p/3912460.html转载于:https://www.cnblogs.com/gaara-zhang/p/8746403.html

数据库基础杂记

sql,Structured Query Language结构化查询语言。SQL 是一门 ANSI(美国国家标准局) 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。SQL 可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Ora…

很有用的X264和ffmpeg的设置

很有用的X264和FFMPEG的设置 http://www.360doc.com/content/11/0209/16/3705984_91612512.shtml 点击打开链接

HALCON示例程序measure_ring.hdev齿轮齿宽度测量

HALCON示例程序measure_ring.hdev齿轮齿宽度测量 示例程序源码(加注释) 关于显示类函数解释 read_image (Image, ‘rings_and_nuts’) dev_close_window () dev_open_window_fit_image (Image, 0, 0, 640, 640, WindowHandle) set_display_font (Windo…

基于RBGD的mapping

最近学习RGBD的SLAM,收集了两个RGBD的mapping的开源工具包 1.RGBDSlam2 a.安装方法: #准备工作空间 source /opt/ros/indigo/setup.bash mkdir -p ~/rgbdslam_catkin_ws/src cd ~/rgbdslam_catkin_ws/src catkin_init_workspace cd ~/rgbdslam_catkin_ws…

【瓜分5000元奖金】Wannafly挑战赛13

链接:https://www.nowcoder.com/acm/contest/80/A来源:牛客网 zzy的小号 时间限制:C/C 1秒,其他语言2秒空间限制:C/C 262144K,其他语言524288K64bit IO Format: %lld题目描述 学家zzy根据字体的特点&#…

X264参数设定详细解释

x264 core:65 r1074M b6bb3d4 Syntax: x264 [options] -o outfile infile [widthxheight] 语法(命令行写法):x264 [参数] -o 输出文件名 输入文件名 [宽x高] 范例: x264 --crf 26 --ref 3 --mixed-refs --bframes 3 --b-adapt 2 --b-pyramid --weightb -…