opencv段连接字符

时间:2017-11-29 10:27:43

标签: python opencv image-processing ocr tesseract

我正在尝试为手写字母进行字符检测。

在识别出来之后,我使用tesseract或opencv SVM,并且到目前为止一直工作正常。

对于分段字母,一切正常,直到我点击那些连接的字母。

我使用以下代码来分割字母:

# -*- coding: utf-8 -*-
import numpy as np
import cv2
# from matplotlib import pyplot as plt
from os.path import dirname, join, basename
import sys
from glob import glob

trainpic=[]
targetdir = dirname(__file__)+'tmporigin'
#print glob(join(dirname(__file__)+'/cat','*.jpg'))
img = {}

debug = True
a_num = 0
for fn in glob(join(targetdir, '*')):
    filename = basename(fn)
    trainpic.append(cv2.imread(fn, 0))
    img_rgb = cv2.imread(fn)
    img = cv2.imread(fn, 0)
    image_close = cv2.morphologyEx(img_rgb, cv2.MORPH_CLOSE, np.ones((1, 7), np.uint8))
    #if debug:
    #    cv2.imshow('morphology', image_close)
    #    key = cv2.waitKey(0)
    _, contours, hierarchy = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

    samples = np.empty((0, 100))
    responses = []
    # keys = [i for i in range(48, 58)]
    tmp_list = []
    tmpcount = 0
    for cnt in contours:
        print 'contourarea:%s' % cv2.contourArea(cnt)
        if cv2.contourArea(cnt) > 130:  # 50 300
            [x, y, w, h] = cv2.boundingRect(cnt)
            print 'boundingRect width:%s' % w
            print 'boundingRect height:%s' % h
            if h > 28:
                cv2.rectangle(img_rgb, (x, y), (x+w, y+h), (0, 0, 255), 2)
                roi = img[y:y+h, x:x+w]
                roismall = cv2.resize(roi, (45, 55))
                if debug:
                    cv2.imshow('norm', img_rgb)
                    key = cv2.waitKey(0)
                # tmp_list.append(roi)
                tmpfilename = fn if tmpcount == 0 else fn.rsplit('.', 1)[0] + '_' + str(tmpcount) + '.png'
                cv2.imwrite(tmpfilename, roismall)
                tmpcount += 1
        else:
            print 'contarea less, skip...'

    #    print img[num].shape
    a_num += 1

print '%s images processed' % a_num

所以,像这个人一样处理具有空间空间的字母很好(分成D和B):

enter image description here

然而,未能像这样分割连接的字母:

enter image description here

我搜索连接字母并查找相关链接,如下这两个:

enter link description here

enter link description here

我尝试了很多,例如形态扩张,腐蚀,开放,关闭,分水岭。但是没有解决我的问题。

我在Ubuntu桌面上使用opencv 3.2.0和python 2.7.10。

任何建议都非常感谢。

感谢。

韦斯利

0 个答案:

没有答案