【发布时间】:2018-07-14 22:01:16
【问题描述】:
我正在使用 MSER 来识别 MSER 中的文本区域。我正在使用以下代码来提取区域并将它们保存为图像。目前,每个识别的区域都保存为单独的图像。但是,我想合并属于合并为单个图像的文本行的区域。
import cv2
img = cv2.imread('newF.png')
mser = cv2.MSER_create()
img = cv2.resize(img, (img.shape[1]*2, img.shape[0]*2))
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
vis = img.copy()
regions = mser.detectRegions(gray)
hulls = [cv2.convexHull(p.reshape(-1, 1, 2)) for p in regions[0]]
cv2.polylines(vis, hulls, 1, (0,255,0))
如何将属于单行的图像拼接在一起?我得到的逻辑将主要基于一些用于识别具有附近 y 坐标的区域的启发式方法。
但是如何在 OpenCV 中准确地合并区域。我错过了这一点,因为我是 openCV 的新手。任何帮助将不胜感激。
【问题讨论】:
-
你的预期输出是什么?
-
计算二值图像中每一行的白色像素数,以及在白色分布中发现尖峰的段。
-
检查this
-
@AmrithKrishna 您能否说明为什么选择腐蚀/膨胀的答案作为接受的答案?
-
@GaneshTata- 非常感谢您的回答。首先,由于斑点的高度不同,中值高度通常不起作用。不同长度的斑点主要是由于语言特定的属性(如连字、标记等)而出现的。现在接受答案的想法与这些无关。通过稍作调整的膨胀和腐蚀,我得到了预期的结果。假设这两种方法或多或少地实现了相同的结果,按照奥卡姆剃刀的说法,应该首选更简单的方法。因此优先考虑当前接受的答案。
标签: python opencv bounding-box image-stitching mser