opencv 如何使用CV2检测非连续符号?

9rnv2umw  于 2023-08-06  发布在  其他
关注(0)|答案(1)|浏览(110)

我有一个打印文本的灰度图像。我想从图像中提取每个字符,以便将它们保存为离散图像。我不想 * 识别 * 字符是什么,我只想每个字形作为一个单独的文件。
我使用cv2,例如:

# Find contours to isolate individual letters
contours, _ = cv2.findContours(binary_image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)`

字符串
这对于连续字符非常有效-也就是说,字形的形状没有中断。
但它不适用于像ij:;这样的字符--上面的点不包括在内。
有没有办法使用CV 2来检测这些字符?我知道这份文件只使用拉丁字母、数字和标点符号。
该文档使用了相当古老的字体,并且与Tesseract或其他传统的OCR引擎不兼容-这就是为什么我想“检测”单个字母,而不是尝试“识别”它们。

4dc9hkyq

4dc9hkyq1#

我使用OpenCV's Erode / Dilate function垂直腐 eclipse 图像。

kernel = np.array([[0, 0, 0, 0, 0],
                   [0, 0, 1, 0, 0],
                   [0, 0, 1, 0, 0],
                   [0, 0, 1, 0, 0],
                   [0, 0, 0, 0, 0]], dtype=np.uint8)

erode = cv2.erode(image, kernel, iterations = 6)

字符串
它改变了这个:


的数据
变成这样:



这将i?字符上的点连接起来,同时留下足够的水平空间以使检测成为可能。
我做了腐 eclipse 的图像上的检测,但应用裁剪到原始图像。

相关问题