为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

开满天机 2022-08-16 18:15:15
我按照一些代码进行简单的文本识别(从如何检测图像中的单独数字?但是,它不断在我的字母中添加附加轮廓,例如e中的循环。使用的代码是:我试图解决这个问题的尝试是测试上一次迭代中的重叠轮廓。但是在标记每个轮廓后,我注意到它们是从最低的y点到最高的y点创建的,如[输出][1]所示。去除内部轮廓的最简单方法是什么?我见过许多线程引用RETR_EXTERNAL(已经在使用)调用和层次结构,但我不明白它们如何适用于此代码。
查看完整描述

1 回答

?
慕沐林林

TA贡献2016条经验 获得超9个赞

你有没有检查过你的轮廓是什么样子的?使用多个矩形的原因是,您的字母或精明的边缘或轮廓变得脱节,因此,中的每个字母都有多个分量。我建议如下:cnts

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

    cv2.imshow("canny", canny)

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

    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)


查看完整回答
反对 回复 2022-08-16
  • 1 回答
  • 0 关注
  • 190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信