How to convert an image into character segments?

后端 未结 1 966
说谎
说谎 2020-12-13 03:04

Often in the process of OCR, an image file is essentially cut into segments, and each character is recgnised as a segment each. For instance,

相关标签:
1条回答
  • 2020-12-13 03:31

    It can be easily done using OpenCV. Below is a sample code:

    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()
    

    Output will look like below:

    enter image description hereenter image description here

    0 讨论(0)
提交回复
热议问题