Image processing 查找图像中特定文本的坐标

Image processing 查找图像中特定文本的坐标,image-processing,scikit-image,Image Processing,Scikit Image,我试图将下图中的问题分段。我唯一的线索是带有粗体文本的数字,它由制表符空格缩进。我试图找到粗体编号(本例中为4,5,6),这样我就可以得到它们的x和y,并将图像分割成3个独立的问题。如何获得这些或如何处理此问题 我正在使用scikit图像进行图像处理 您的图像看起来非常简单,因此通过在展开的组件周围进行轮廓检测,可以非常轻松地分割文本。以下是详细的步骤: 1) 对图像进行二值化并反转,以便于形态学操作 2) 仅使用长水平核(例如(20,1)形核)在水平方向上放大图像 3) 找到所有连接组件的轮廓

我试图将下图中的问题分段。我唯一的线索是带有粗体文本的数字,它由制表符空格缩进。我试图找到粗体编号(本例中为4,5,6),这样我就可以得到它们的x和y,并将图像分割成3个独立的问题。如何获得这些或如何处理此问题

我正在使用scikit图像进行图像处理


您的图像看起来非常简单,因此通过在展开的组件周围进行轮廓检测,可以非常轻松地分割文本。以下是详细的步骤:

1) 对图像进行二值化并反转,以便于形态学操作

2) 仅使用长水平核(例如(20,1)形核)在水平方向上放大图像

3) 找到所有连接组件的轮廓并获得它们的坐标

4) 使用这些边界框标注信息及其坐标来分割问题

下面是相同的Python实现:

# Text segmentation 
import cv2
import numpy as np

rgb = cv2.imread(r'D:\Image\st4.png')
small = cv2.cvtColor(rgb, cv2.COLOR_BGR2GRAY)

#threshold the image
_, bw = cv2.threshold(small, 0.0, 255.0, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)

# get horizontal mask of large size since text are horizontal components
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (20, 1))
connected = cv2.morphologyEx(bw, cv2.MORPH_CLOSE, kernel)

# find all the contours
_, contours, hierarchy,=cv2.findContours(connected.copy(),cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)

#Segment the text lines
for idx in range(len(contours)):
    x, y, w, h = cv2.boundingRect(contours[idx])
    cv2.rectangle(rgb, (x, y), (x+w-1, y+h-1), (0, 255, 0), 2)
输出图像:

这些数字的字体和大小是固定不变的吗?@MarkSetchell噢,不,可能会有所不同。但问题之间肯定有一些空白。这应该会给你一些如何找到问题之间的差距的想法-将整个图像扭曲到一个像素宽和与原始图像相同的高度,然后你会发现横贯图像的水平白线。。。谢谢这种方法很有趣。