반응형

안녕하세요! 오늘은 tesseract를 이용하여 자동차 번호판을 인식하는 방법입니다.

준비과정이 필요하신 분들은 전 글을 참고하시면 됩니다.

 

maxtime1004.tistory.com/37

 

[PYTHON] tesseract를 이용한 자동차 번호판 인식기 - 1

안녕하세요! 오늘은 tesseract를 이용하여 자동차 번호판을 인식하는 방법입니다. 저는 아래의 영상을 통해 도움을 얻었고 해당 영상에도 링크에 깃허브 주소가 있으니 참고하실 분들은 아래 링크

maxtime1004.tistory.com

 

 

˙ 코드 및 실행 결과 

 

전체 코드는 더 많은 내용을 담고 있기 때문에 대략적으로 간단히만 설명 드리겠습니다. 전체 코드는 아래 깃허브에서 확인하실 수 있습니다.

github.com/dpwls64/tesseract_project

 

dpwls64/tesseract_project

Contribute to dpwls64/tesseract_project development by creating an account on GitHub.

github.com

 

1. 자동차 번호판 위치 알아내기

 

- 원본 이미지

 

- 이미지 흑백화

gray = cv2.cvtColor(img_ori, cv2.COLOR_BGR2GRAY)

 

- 가우시안 블러 : 노이즈 줄이기

img_blurred = cv2.GaussianBlur(gray, ksize=(5, 5), sigmaX=0)

 

- 스레시 홀드 : 이미지 구별 쉬움 (흑색, 흰색)

img_thresh = cv2.adaptiveThreshold(
    img_blurred, 
    maxValue=255.0, 
    adaptiveMethod=cv2.ADAPTIVE_THRESH_GAUSSIAN_C, 
    thresholdType=cv2.THRESH_BINARY_INV, 
    blockSize=19, 
    C=9
)

가우시안 블러를 이용하여 이미지를 흐릿하게 만들어 노이즈를 줄여주고,

스레시 홀드를 이용하여 이미지를 검정색, 흰색으로만 표현하여 컴퓨터가 구별하기 쉽게 만들어 줍니다.

 

 

- 윤곽선 찾기

contours, _ = cv2.findContours(
    img_thresh, 
    mode=cv2.RETR_LIST, 
    method=cv2.CHAIN_APPROX_SIMPLE
)

 

- 윤곽선 중 사각형 찾기

for contour in contours:
    x, y, w, h = cv2.boundingRect(contour)
    cv2.rectangle(temp_result, pt1=(x, y), pt2=(x+w, y+h), color=(255, 255, 255), thickness=2)

찾은 사각형 중에서 점차적으로 번호판과 가깝다고 생각하는 사각형들을 찾습니다.

 

- 번호판 각도 돌리기

 rotation_matrix = cv2.getRotationMatrix2D(center=(plate_cx, plate_cy), angle=angle, scale=1.0)
 img_rotated = cv2.warpAffine(img_thresh, M=rotation_matrix, dsize=(width, height))

비뚤어져 있는 번호판을 일자로 되도록 돌리고, 이미지를 더 선명하게 해줍니다.

2. 번호판 글자 인식하기 (tesseract)

chars = pytesseract.image_to_string(img_result, lang='kor', config='--psm 7 --oem 0')

result_chars = ''
has_digit = False
for c in chars:
if ord('가') <= ord(c) <= ord('힣') or c.isdigit():
if c.isdigit():
has_digit = True
result_chars += c

숫자와 한글로 이미지를 인식하여 결과를 추출합니다.

반응형
반응형

안녕하세요! 오늘은 tesseract를 이용하여 자동차 번호판을 인식하는 방법입니다.

저는 아래의 영상을 통해 도움을 얻었고 해당 영상에도 링크에 깃허브 주소가 있으니 참고하실 분들은 아래 링크를 확인하시면 됩니다.

 

www.youtube.com/watch?v=PpTl7xxGXh4

<빵형의 개발도상국 - 자동차 번호판 인식기>

 

 

˙ 준비 과정 

 

- pytesseract 설치

 

anaconda 창이나 cmd창을 이용하여 아래의 명령어를 통해 패키지를 설치합니다.

pip install pytesseract

 

 

- tesseract-OCR 설치

 

github.com/UB-Mannheim/tesseract/wiki

 

UB-Mannheim/tesseract

Tesseract Open Source OCR Engine (main repository) - UB-Mannheim/tesseract

github.com

 

위의 링크로 들어가서 자신의 PC의 맞는 파일을 다운로드 합니다. 저는 64bit를 다운받았고, 설치 경로는 바꾸지 않고 기본 경로로 설치합니다.

<다운로드 파일 선택>

 

 

- kor.traineddata 넣기

 

파일을 다운받아 아래의 경로에 추가합니다. 파일과 전체코드는 아래 깃허브에서 다운받으실 수 있습니다.

github.com/dpwls64/tesseract_project

 

dpwls64/tesseract_project

Contribute to dpwls64/tesseract_project development by creating an account on GitHub.

github.com

[ 파일경로 ]  C:\Program Files\Tesseract-OCR\tessdata

 

 

- 환경변수 설정

제어판 - 시스템 및 보안 - 시스템
고급시스템 – 환경변수 – 시스템변수 – Path 맨 위에 C:\Program Files\Tesseract-OCR 추가

 

준비과정은 여기까지입니다. 코드 설명 및 실행 결과는 다음 글에서 확인하실 수 있습니다!

maxtime1004.tistory.com/38

 

[PYTHON] tesseract를 이용한 자동차 번호판 인식기 - 2

안녕하세요! 오늘은 tesseract를 이용하여 자동차 번호판을 인식하는 방법입니다. 준비과정이 필요하신 분들은 전 글을 참고하시면 됩니다. maxtime1004.tistory.com/37 [PYTHON] tesseract를 이용한 자동차 번

maxtime1004.tistory.com

 

반응형

+ Recent posts