1. 看一个实际案例

  • 这是一块电池,右侧有两个极耳,极耳相对电池的位置固定。

在这里插入图片描述

力神的检测部门会对电池进行抽检,他们使用的工具是一个电木模具,类似于下面的图形,它可以有效的限制住电池的上限。(NG一般是电池尺寸超出标准,所以对电池尺寸的下限不需要限制)
如果电池能放入模具中,则认为合格,如果放不进去就是不合格,那么该如何来设计算法来判断电池是否合格呢
电池的极耳会漏在外面

  • 在这里插入图片描述

2. 解决方案和代码

在这里插入图片描述

halcon代码

read_image (Image, '08-45-01-715_N491266H33967')

* 设置ROI
gen_rectangle1 (ROI_1, 2120.94, 4169.55, 2583.03, 4954.1)
gen_rectangle1 (ROI_2, 2751.07, 4152.49, 3192.16, 4954.1)
* 区域并集(加法)
union2 (ROI_1, ROI_2, ROI_3)
gen_rectangle1 (ROI_4, 1081.22, 1901.18, 3979.82, 5252.57)
* 区域差集(减法)
difference (ROI_4, ROI_3, RegionDifference)

* 抠图
reduce_domain (Image, RegionDifference, ImageReduced)
* 二值化
threshold (ImageReduced, Regions, 0, 100)
*dilation_circle (Regions, RegionDilation, 5.5)
* 分割
connection (Regions, ConnectedRegions)
* 筛选
select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 3.22343e+006, 5e+006)

* 最小外接矩形
smallest_rectangle2 (SelectedRegions, Row, Column, Phi, Length1, Length2)
gen_rectangle2_contour_xld (Rectangle, Row, Column, Phi, Length1, Length2)

* 显示
dev_set_line_width (2)
dev_display (Image)
dev_display (Rectangle)

* 对比电池的尺寸和模具尺寸
set_display_font (3600, 16, 'mono', 'true', 'false')
disp_message (3600, 'L1:'+2*Length1, 'image', Row, Column-400, 'cyan', 'false')
disp_message (3600, 'L2:'+2*Length2, 'image', Row+400, Column-400, 'green', 'false')

3. 资源下载

https://download.csdn.net/download/weixin_38566632/35324003



————————————————
版权声明:本文为CSDN博主「MechMaster」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_38566632/article/details/121029374