物体的面积及中心坐标在工业自动化场景中应用极广,物体面积可以用来筛选不合格产品,中心坐标可以用来引导机械手自动抓取,并且在更深层次的图像处理中也是需要用到这两个值的。可以说在整个视觉处理过程中,面积与中心坐标是必须要会的。下面就和我一起来学习下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的变量窗口看到,效果如下:
注意:stop暂停函数按F5可继续运行。
评论 (2)