使用cv2.groupRectangles()分组矩形时返回空元组的问题求助
解决cv2.groupRectangles返回空元组的问题
问题出在对两个参数的理解和设置上:
groupThreshold参数的实际含义:
这个参数代表「组内最小矩形数量减一」。你设置为1时,只有包含至少2个矩形的组才会被保留,单个矩形会被直接过滤。eps参数的匹配阈值限制:
你的三个矩形之间的相对位置、尺寸差异超过了eps=0.5的判定阈值,无法被归为同一组。最终每个矩形单独成组,因不满足groupThreshold=1的要求而全部被丢弃,返回空元组。
解决方法
方法1:保留所有矩形(包括单个)
将groupThreshold设为0,这样所有矩形(哪怕单独一个)都会被保留:
(rect, weights) = cv2.groupRectangles(rectangles, groupThreshold=0, eps=0.5)
运行后输出:
[[530 119 47 47] [641 117 53 53] [531 89 117 117]]
方法2:调整eps让矩形可分组
增大eps值,放宽相似矩形的判定条件。比如设置eps=2.1,三个矩形会被判定为相似并合并为一组:
(rect, weights) = cv2.groupRectangles(rectangles, groupThreshold=1, eps=2.1)
运行后输出合并后的矩形:
[[530 89 164 117]]
内容的提问来源于stack exchange,提问作者KexO
相关产品推荐
相关产品推荐

