我使用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的新手。任何帮助都将不胜感激。
附加样本图像
所需的输出如下
另一条线
另一条线
发布于 2018-02-05 05:55:17
也许像膨胀侵蚀这样原始的东西也能在你的情况下发挥作用?例如,如果我在原始图像上使用erode
操作,然后是dilate
操作,并且主要是在水平方向,例如:
img = cv2.erode(img, np.ones((1, 20)))
img = cv2.dilate(img, np.ones((1, 22)))
其结果是:
所以如果我们把它画在原来的图像上,它就变成:
我没有像你一样调整原始图像的大小(可能是为了检测那些小的单独的点和东西)。并不理想(我不知道MSER是如何工作的),但是经过足够的调整,您甚至可以使用简单的连接组件检测吗?
发布于 2018-02-05 18:32:59
如果您对使用MSER特别感兴趣,那么,正如您所提到的,可以使用一种将区域与附近的y坐标相结合的启发式方法。下面的方法可能不是有效的,我将尝试优化它,但它可能会给您一个如何解决问题的想法。
再次,我想重申这样一个事实,即它们可能是进一步优化这种方法的方法。目的是给你一个如何解决这些问题的想法。
https://stackoverflow.com/questions/48615935
复制相似问题