关于Halcon的工件形状、颜色、位置及二维码识别

本文介绍使用Halcon进行工件识别的过程,包括建模、形状识别、数量识别、颜色识别以及二维码的检测。在建模阶段,为了避免二维码的干扰,选择了工件无二维码的一面。通过区域的圆度和直角度区分形状,通过饱和度图像判断颜色,并计算工件的数量、中心点坐标和旋转角度。最后,进行了二维码的识别。
摘要由CSDN通过智能技术生成

这里写图片描述

图片内是4个不同形状、颜色、位置的工件,上方还贴着二维码,我想通过Halcon的一些算子将它们的一些基本信息检测出来。


一、建模

为了方便查找这些工件的基本轮廓,我将这些不同形状的工件分别建模,而在建模的过程中,由于二维码会干扰到我们的区域查找。所以,最好利用没有二维码的那一面进行建模,才能达到理想的效果。

我选择的建模对象分别如下(由于查找的对象是工件的轮廓,固颜色并不重要):

这里写图片描述

这里写图片描述

以下是具体的处理工程(两种形状工件的处理工程大同小异):

rgb1_to_gray (Image1, GrayImage)    //将RGB图像转化为灰度图像
disp_message (WindowHandle, '请画一个矩形将工件选取:', 'window', 24, 24, 'black', 'true')    //在图片设定的位置显示一句话
draw_rectangle1 (WindowHandle, Row11, Column11, Row2, Column2)    //画一个矩形将大致的工件范围确定,以方便后续的查找和处理
gen_rectangle1 (Rectangle, Row11, Column11, Row2, Column2)    //显示上面画的矩形
reduce_domain (GrayImage, Rectangle, ImageReduced)    //将这个矩形转化成一个区域
threshold (ImageReduced, Region, 87, 255)    //在ImageReduced区域内查找阈值为87到255之间的区域
connection (Region, ConnectedRegions)    //将Region内的区域分离
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 200000, 600000)    //将ConnectedRegions区域内面积在200000到600000之间的区域选取出来
dev_display (GrayImage)
dev_display (SelectedRegions)
gen_contour_region_xld (SelectedRegions, Contours, 'border_holes')    //将SelectedRegions区域转化为轮廓模型(采用中断边缘模式,否则矩形工件内的中空区域无法被查找)
create_scaled_shape_model_xld (Contours, 'auto', rad(0), rad(360), 'auto', 0.9, 1.1, 'auto', 'auto', 'ignore_local_polarity', 5, ModelID_rectangle)    
  • 11
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值