시작하기 전 구상한 프로세스는 다음과 같다.
-
이미지 불러오기(grayscale로 변환)
-
전처리 (Gaussian blur로 edge 강조하기, threshold(adaptive), morphology, canny)
-
원하는 영역 찾아내기(contour)
-
이미지 평면화 (affine transform, warp) *필요시
-
pytesseract 라이브러리 이용
-
결과값 = (차 번호, 용도, 차종) 출력
-
결과값 출력이후, 번호판 모자이크 처리
위 과정을 생각하고 프로젝트를 진행했다.
cv2.Canny의 경우에는 사용하지 않았다. 오히려 cv2.adaptiveThreshold나 morph중 하나인 cv2.MORPH_TOPHAT을 사용하여 이미지를 전처리 하는 것이 성능이 좋았다.
그 외에는 별 다른 점이 없었다.
** 인터넷에서 다운로드 한 사진입니다. 혹시나 차주분이 불쾌하시다면 내리겠습니다!
구글링을 하며 코드를 참조하고 OpenCV Tutorial을 참조했습니다. 자세한 설명은 코드에 주석으로 달아두었습니다!