【问题标题】:OpenCV: removing contours from external contoursOpenCV:从外部轮廓中删除轮廓
【发布时间】:2020-06-14 07:54:32
【问题描述】:

我按照一些代码来做简单的文本识别(来自How to detect separate figures in an image?)。但是,它会不断在我的字母中添加附加轮廓,例如 e 中的循环。使用的代码是:

我试图解决这个问题是为了测试之前迭代中的重叠轮廓。但是在标记每个轮廓之后,我注意到它们是从最低 y 点到最高点创建的,如 [输出][1]

去除内轮廓最简单的方法是什么?我已经看到许多线程引用 RETR_EXTERNAL(已经在使用)调用和层次结构,但我看不出它们如何适用于这段代码。

【问题讨论】:

    标签: python opencv opencv-contour


    【解决方案1】:

    你检查过你的轮廓是什么样的吗?多个矩形的原因是因为您的字母或精巧的边缘或轮廓变得不连贯,因此,cnts 中的每个字母有多个组件。我建议如下:

    1. 打印精明的边缘并检查它们是否按字母连接。

      cv2.imshow("canny", canny)

    2. 根据你在上面看到的,你可以改变你的模糊内核大小来连接断开的字母组件,

      blurred = cv2.GaussianBlur(gray, (9, 9), 0)

    3. 或使用您的边缘检测参数(更低的 minval 或更大的孔径)。

      canny = cv2.Canny(blurred, 80, 255, 3)

    4. 您还可以应用一些形态学操作来连接断开的字母组件,即膨胀或闭合。

      kernel = np.ones((5,5),np.uint8) closing = cv2.morphologyEx(canny, cv2.MORPH_CLOSE, kernel)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-23
      • 2016-09-25
      • 2019-01-25
      • 2016-10-21
      • 2019-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多