[python] OpenCV를 사용하여 이미지에서 글자 추출하기

이미지 처리를 위해 널리 사용되는 OpenCV 라이브러리는 다양한 기능을 제공합니다. 그 중에서도 글자 추출은 컴퓨터 비전 분야에서 매우 중요한 작업 중 하나입니다. 이 글에서는 Python과 OpenCV를 사용하여 이미지에서 글자를 추출하는 방법에 대해 알아보겠습니다.

필요한 라이브러리 설치

먼저, OpenCV와 Python을 사용하기 위해서는 해당 라이브러리를 설치해야 합니다. 아래 명령어를 사용하여 설치할 수 있습니다.

pip install opencv-python

이미지 불러오기

먼저, 이미지를 불러와야 합니다. 다음 코드는 OpenCV를 사용하여 이미지를 불러오는 예제입니다.

import cv2

# 이미지 파일 경로
image_path = 'image.jpg'

# 이미지 로드
image = cv2.imread(image_path)

# 이미지 확인
cv2.imshow('Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

위 코드에서 image_path 변수에는 이미지 파일의 경로를 설정해야 합니다. cv2.imread() 함수를 사용하여 이미지를 로드하고, cv2.imshow() 함수를 사용하여 이미지를 화면에 표시합니다.

이미지 전처리

글자를 추출하기 전에 이미지를 전처리해야 합니다. 대부분의 경우, 이미지 전처리는 이미지를 이진화하는 과정입니다. 이진화는 이미지를 흑백으로 변환하는 과정으로, 글자와 배경을 구분하기 쉽게 만듭니다.

import cv2

# 이미지 파일 경로
image_path = 'image.jpg'

# 이미지 로드
image = cv2.imread(image_path)

# 이미지 전처리
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]

# 이미지 확인
cv2.imshow('Preprocessed Image', thresh)
cv2.waitKey(0)
cv2.destroyAllWindows()

위 코드에서 cv2.cvtColor() 함수를 사용하여 이미지를 흑백으로 변환하고, cv2.threshold() 함수를 사용하여 이미지를 이진화합니다. cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU는 Otsu’s 이진화 알고리즘을 사용하여 이미지를 변환하는 것을 의미합니다.

글자 추출

전처리된 이미지에서 글자를 추출하는 방법에는 여러 가지가 있지만, 가장 일반적인 방법은 이미지에서 contours(윤곽선)를 찾는 것입니다. contours는 이미지에서 글자와 같은 물체의 경계를 나타내는 곡선입니다.

import cv2

# 이미지 파일 경로
image_path = 'image.jpg'

# 이미지 로드
image = cv2.imread(image_path)

# 이미지 전처리
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1]

# contours 찾기
contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 이미지에 contours 그리기
cv2.drawContours(image, contours, -1, (0, 255, 0), 3)

# 이미지 확인
cv2.imshow('Extracted Text', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

위 코드에서 cv2.findContours() 함수를 사용하여 이미지에서 contours를 찾고, cv2.drawContours() 함수를 사용하여 이미지에 contours를 그립니다. 이렇게 추출된 글자는 녹색 선으로 표시됩니다.

결론

이제 OpenCV와 Python을 사용하여 이미지에서 글자를 추출하는 방법을 알아보았습니다. 이미지를 불러오고 전처리한 후, contours를 찾아 글자를 추출하는 방법을 사용하면 다양한 글자 인식을 위한 응용 프로그램에서 활용할 수 있습니다.

참고 자료