让代码更简单

Halcon获取测量区域面积与中心坐标

重要:本文最后更新于2019-03-30 09:40:21,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

物体的面积及中心坐标在工业自动化场景中应用极广,物体面积可以用来筛选不合格产品,中心坐标可以用来引导机械手自动抓取,并且在更深层次的图像处理中也是需要用到这两个值的。可以说在整个视觉处理过程中,面积与中心坐标是必须要会的。下面就和我一起来学习下halcon处理图像,并取得物体的面积与中心坐标。

Halcon获取测量区域面积与中心坐标

Halcon获取测量区域面积与中心坐标

打开halcon新建一个项目,在程序窗口中输入如下代码:

复制
dev_close_window()
dev_open_file_dialog ('read_image', 'read', 'default', Selection)
read_image (Image, Selection)
get_image_size (Image, Width, Height)
dev_open_window (0, 0, Width, Height, 'black', WindowHandle)
set_display_font (WindowHandle, 16, 'mono', 'true', 'false')
dev_display (Image)
threshold (Image, Regions, 0, 127)
connection(Regions,ConnectedRegions)
sort_region(ConnectedRegions,SortedRegions,'first_point','true','column')
select_obj(SortedRegions,Circle,1)
area_center(Circle,AreaCircle, RowCircle, ColumnCircle)
stop()
select_obj(SortedRegions,Triangle,2)
area_center(Triangle,Area, X, Y)

上面的代码通过dev_open_file_dialog函数打开一个Windows文件选择对话框,让我们可以随机选取我们需要测量的图片,该函数返回选中的文件地址,当然你也可以使用前面的方法,直接读入指定图片,并显示在Windows窗口中。

然后通过threshold函数以127的灰度值为界限,将图片中的图像进行分割,我这里采用的是黑白色图片,区分明显,大家可以根据自己的图像调整阈值。分割后的图像区域存储在Regions变量中。

然后使用sort_region函数将分割后的图形区域排序,我这里是按照每个图形第一次出现的列作为排序条件。按照上面的图像来看,第一个图形是圆形,第二个图形是三角形。

再使用select_obj函数选择对应的图形,这个函数有3个参数,第一个是指图形数组,第二个是指被赋值图形的变量,第三个就是指前面分割排序后的第几个图形了。

最后使用area_center函数取得图形的面积与中心坐标值。该函数第一个参数值目标图形,第二个参数是被赋值的面积变量,第三个和第四个是被赋值的中心坐标变量。

整个程序的运行过程,变量的值都可以通过halcon的变量窗口看到,效果如下:

Halcon获取测量区域面积与中心坐标

Halcon获取测量区域面积与中心坐标

注意:stop暂停函数按F5可继续运行。

感觉很棒!可以赞赏支持我哟~

7 打赏

评论 (2)

登录后评论
非常的好
写的很好,很喜欢
QQ咨询 邮件咨询 狗哥推荐