OCR에 대해 숫자와 문자가있는 이미지의 윤곽을 찾습니다. 그래서 윤곽선을 왼쪽에서 오른쪽으로 정렬하고 라인을 선으로, 즉 위에서 아래로 정렬해야합니다. 지금은 등고선이 그렇게 정렬되지 않았습니다.Python과 OpenCV를 사용하여 왼쪽에서 오른쪽으로 윤곽선을 정렬하는 방법
PIC: Contours is detected as shown here, including dots above i, full stop, comma, etc.
예를 들어, 상기 이미지의 윤곽선이 임의로 정렬된다.
내가 원하는 것은 D, O, Y, O, U, K, N, O, W, S, O, M, E, O, N, E, R,. (점) 나는 (점없이), c, h ... 등등. 나는 우리가 먼저 y 좌표를 관찰 한 다음 몇 가지 키와 x 좌표를 사용하는 몇 가지 방법을 시도했다. 지금과 마찬가지로 다음 정렬 코드가 있습니다. 처음 2 줄에서는 작동합니다. 그런 다음 3 행에서 어떻게 든 정렬이 발생하지 않습니다. 주된 문제는 i, j,?, (점), (쉼표) 등과 같은 문자 (같은 점에 속함에도 불구하고 (점)의 y 축이 다양 함)에있는 것처럼 보입니다. 그렇다면 이것에 대한 좋은 해결책은 무엇일까요?
for ctr in contours:
if cv2.contourArea(ctr) > maxArea * areaRatio:
rect.append(cv2.boundingRect(cv2.approxPolyDP(ctr,1,True)))
#rect contains the contours
for i in rect:
x = i[0]
y = i[1]
w = i[2]
h = i[3]
if(h>max_line_height):
max_line_height = h
mlh = max_line_height*2
max_line_width = raw_image.shape[1] #width of the input image
mlw = max_line_width
rect = np.asarray(rect)
s = rect.astype(np.uint32) #prevent overflows
order= mlw*(s[:,1]/mlh)+s[:,0]
sort_order= np.argsort(order)
rect = rect[ sort_order ]
pls는 3 행에서 작동하지 않는 것을 명확하게 보여줍니다. – jlarsch
이미지의 세 번째 줄의 윤곽선이 stress.ed, hav..i, n, g로 정렬됩니다. 등등. 점들이 다른 문자의 위치에 무작위로 나타나서 다른 문자가 올바른 정렬 된 위치에서 떨어집니다. –