开启左侧

[HALCON算子] fit_rectangle2_contour_xld算子提示错误代码: 3266

[复制链接]
leemh 发表于 2022-11-2 11:08:54 | 显示全部楼层 |阅读模式
我用edges_sub_pix()算子提取轮廓,然后想用fit_rectangle2_contour_xld()算子做矩形框拟合,但是提示我如下错误:

未处理的程序异常:
HALCON算子错误
当在函数 'main' 中调用 'fit_rectangle2_contour_xld'时.line: 64.

No points found for at least one side of the rectangle (HALCON错误代码: 3266)

我提取出来的轮廓是第一张图这个样子的

第二张图是左侧轮廓的放大图,里面有几条重复的线。

现在我在用fit_rectangle2_contour_xld ()算子拟合矩形框的时候一直提示错误,百度也没找到解决办法,特来此提问,请帮忙提供点思路,不慎感激



提取的轮廓图

提取的轮廓图

左侧轮廓放大图

左侧轮廓放大图
莫负好春光 发表于 2022-11-2 12:13:02 | 显示全部楼层
这个是对于算子使用有误导致的问题:
建议你可以按照如下方案试试:
1、确认得到的亚像素轮廓是多个独立的轮廓时应当使用union_adjacent_contours_xld 算子(其他合并的也可以)进行轮廓合,然后该轮廓需要具有足够多拟合旋转矩形的点,所以需要从合并后的轮廓中获取到最长的那个轮廓作为拟合旋转矩形的点,可以使用select_shape_xld 进行筛选。
2、fit_rectangle2_contour_xld 算子中的迭代次数、拟合算法等参数可以多次尝试。

应该就能够解决你现在的这个问题了。
 楼主| leemh 发表于 2022-11-2 13:55:26 | 显示全部楼层
莫负好春光 发表于 2022-11-2 12:13
这个是对于算子使用有误导致的问题:
建议你可以按照如下方案试试:
1、确认得到的亚像素轮廓是多个独立的 ...

我用了select_contours_xld()和union_adjacent_contours_xld(),处理完之后的轮廓依旧是由许多个小轮廓组成的一个矩形轮廓,然后使用fit_rectangle2_contour_xld ()拟合依旧是提示错误。是不是因为我的一个矩形轮廓由太多个小轮廓组成的原因,才导致的失败?E:\desktop\微信图片_20221102135132.jpg
微信图片_20221102135132.jpg
 楼主| leemh 发表于 2022-11-2 16:40:03 | 显示全部楼层
我已经解决了我的问题。在用fit_rectangle2_contour_xld ()拟合矩形框的时候,它会对每一个单独的轮廓进行拟合,也就是我图1中的轮廓图是由30多个小轮廓组合而成的,在调用函数的时候会对每一个小轮廓拟合,从而产生错误。

解决办法:用union_adjacent_contours_xld 算子把轮廓合并成一个,再拟合。

我因为拍的照片成像质量不佳,因此产生了很多单独的小轮廓,在使用union_adjacent_contours_xld 时参数调的特别大才合并出一个整体。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表