首页 > 解决方案 > 我们如何在精明的边缘检测输出周围添加边界框?

问题描述

我正在使用精明的边缘检测,并希望在检测到的边缘周围创建一个边界框,以便每个单词都被单个边界框覆盖。

Canny Edge 输出 -

在此处输入图像描述

精明边缘输出周围的边界框 -

在此处输入图像描述

我试过以下方法

contours,hierarchy=cv2.findContours(edged,cv2.RETR_LIST,cv2.CHAIN_APPROX_NONE)


boundRect = [None]*len(contours)
for i, c in enumerate(contours):
    contours_poly = cv2.approxPolyDP(c, 3, True)
    boundRect[i] = cv2.boundingRect(contours_poly)

for i in range(len(contours)):
    cv2.rectangle(image, (int(boundRect[i][0]), int(boundRect[i][1])), (int(boundRect[i][0]+boundRect[i][2]), int(boundRect[i][1]+boundRect[i][3])), (0,0,0), 2)

但在这种方法中,每个字母都单独获得边界框。

实际输出 -

在此处输入图像描述

轮廓输出 -

在此处输入图像描述

标签: pythonopencvedge-detection

解决方案


您可能需要找到轮廓,然后应用边界框。以下链接可以提供帮助:

  1. 寻找轮廓试试这个

  2. 绘制边界框试试这个


推荐阅读