使用 Python 和 OpenCV3 检测流程图中的文本区域

Posted

技术标签:

【中文标题】使用 Python 和 OpenCV3 检测流程图中的文本区域【英文标题】:Detect text regions in a flowchart using Python and OpenCV3 【发布时间】:2018-09-09 15:05:17 【问题描述】:

我正在尝试识别包含文本的图像部分。为此,我首先使用 OpenCV (v.3) 来预处理图像,然后将矩形/框添加到文本部分。

我下面的代码确实报告了一些轮廓。请参阅下面的代码、输入图像和输出。

代码:

import os,sys,cv2,pytesseract

## IMAGE
afile           = "test-small.jpg"

def reader(afile):
    aimg            = cv2.imread(afile,0)
    print("Image Shape%s | Size:%s" % (aimg.shape,aimg.size))
    return aimg

def boundbox(aimg):
    out_path2                   = "%s-tagged.jpg" % (afile.rpartition(".")[0])
    ret,thresh                  = cv2.threshold(aimg,127,255,0)
    image, contours, hierarchy  = cv2.findContours(thresh,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_NONE)

    acount = 0
    for contour in contours:
            acount+=1
            x, y, w, h        = cv2.boundingRect(contour)
            print("Coordinates",x,y,w,h)
            if w < 100 and h < 100:  ## Avoid tagging small objects i.e. false positives
                continue

            cv2.rectangle(aimg, (x, y), (x + w, y + h), (255, 0, 0), 8) ##

    print("Total contours found:%s" % (acount))
    cv2.imwrite(out_path2,aimg)
    return out_path2

def main():
    aimg        = reader(afile)
    bimg        = boundbox(aimg)

if __name__ == '__main__':
    main()

测试图片:

输出:

问题在于 (1) 矩形在图像上不可见并且 (2) 文本部分的检测不准确。如何改进上述代码以检测带有文本的部分?

感谢您的帮助。

巴德

【问题讨论】:

你的问题是什么?你的问题是什么?删除您的示例并将其替换为最小的示例。这信息太多了。 【参考方案1】:

在应用阈值之前尝试调整图像大小。您还可以在应用轮廓之前尝试腐蚀和膨胀函数。

【讨论】:

以上是关于使用 Python 和 OpenCV3 检测流程图中的文本区域的主要内容,如果未能解决你的问题,请参考以下文章

python opencv3 直线检测

python opencv3 检测人

python opencv3 静态图片检测人脸

python opencv3 轮廓检测

python+opencv3图像处理学习记录

python+opencv3图像处理学习记录