首页 > 解决方案 > 使用 OpenCV 进行图像分割 - 将整个图像视为一个片段

问题描述

我正在编写从图像(在此特定场景中为文档)中提取文本的代码。在此之前,我正在运行通常的二值化和分割图像处理任务,以便确定在图像中我可以找到文本位的确切位置。

这一切都相对完美,除了一个细节:在我从 OpenCV 获得的片段中,有一个片段是图像本身。因此,我从图像中提取文本两次:一次从每一位文本(即正确识别的段)中提取,一次从整个图像中提取(即错误识别的段)。

可悲的是,由于隐私问题,我无法发布图片,因为它是出生证明,但我的问题是:如何阻止图片本身被视为细分之一?

以下是我如何在二值化和膨胀之后获得片段:

contours, hierarchy = cv2.findContours(image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

这是我非常简单的文本提取循环:

text = ''

for contour in contours:
    x, y, w, h = cv2.boundingRect(contour)

    image_segment = image[y:y + h, x:x + w]
    text += pytesseract.image_to_string(image_segment, lang='eng') + '\n'

我想出了一个解决方案,该解决方案涉及将轮廓的边界与图像的边界进行比较,如果它们相同,则忽略循环中的该段。但这似乎不是理想的解决方案。

标签: pythonopencvimage-processing

解决方案


推荐阅读