OpenCV:从外部轮廓中删除轮廓

2024-05-13 06:05:42 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

去除内轮廓最简单的方法是什么?我见过许多线程引用RETR_外部(已经在使用)调用和层次结构,但我不知道它们如何适用于此代码


Tags: to代码in标记image文本an字母
1条回答
网友
1楼 · 发布于 2024-05-13 06:05:42

你检查过你的轮廓了吗?之所以有多个矩形,是因为字母或canny边或轮廓断开连接,因此cnts中每个字母都有多个组件。我建议如下:

  1. 打印canny边缘并检查它们是否按字母连接

    cv2.imshow("canny", canny)

  2. 根据上面看到的,您可以更改blur内核大小以连接断开连接的字母组件

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

  3. 或者使用边缘检测参数(较小的最小值或较大的光圈)

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

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

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

相关问题 更多 >