【问题标题】:How to convert an image into character segments?如何将图像转换为字符段?
【发布时间】:2012-06-13 10:06:00
【问题描述】:

通常在 OCR 的过程中,图像文件本质上是被分割成段,每个字符被识别为一个段。 比如

必须转换为类似的东西

此外,是否有任何适用于泰卢固语等亚洲语言的算法可用于此目的?如果没有,这对英语是怎么做的?

【问题讨论】:

    标签: matlab opencv computer-vision ocr image-segmentation


    【解决方案1】:

    使用 OpenCV 可以轻松完成。下面是一个示例代码:

    import cv2
    import numpy as np
    
    # Load the image
    img = cv2.imread('sof.png')
    
    # convert to grayscale
    gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    
    # smooth the image to avoid noises
    gray = cv2.medianBlur(gray,5)
    
    # Apply adaptive threshold
    thresh = cv2.adaptiveThreshold(gray,255,1,1,11,2)
    thresh_color = cv2.cvtColor(thresh,cv2.COLOR_GRAY2BGR)
    
    # apply some dilation and erosion to join the gaps
    thresh = cv2.dilate(thresh,None,iterations = 3)
    thresh = cv2.erode(thresh,None,iterations = 2)
    
    # Find the contours
    contours,hierarchy = cv2.findContours(thresh,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
    
    # For each contour, find the bounding rectangle and draw it
    for cnt in contours:
        x,y,w,h = cv2.boundingRect(cnt)
        cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)
        cv2.rectangle(thresh_color,(x,y),(x+w,y+h),(0,255,0),2)
    
    # Finally show the image
    cv2.imshow('img',img)
    cv2.imshow('res',thresh_color)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    输出将如下所示:

    【讨论】:

    • +1 很好的答案,但我认为它可以在每一步使用一些 cmets(特别是因为 OP 在他的问题中没有提到 OpenCV)
    猜你喜欢
    • 1970-01-01
    • 2014-08-22
    • 2014-12-17
    • 2011-06-17
    • 1970-01-01
    • 1970-01-01
    • 2020-12-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多