반응형

안녕하세요! 오늘은 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

 

반응형
반응형

안녕하세요! 오늘은 selenium을 이용한 간단한 웹 크롤링입니다.

 

 사전 준비 

 

- selenium 설치

   selenium이 설치가 안되신 분들은 pip install selenium 으로 먼저 설치합니다.

 

- chromedriver 설치

크롬 - 더보기 - 도움말 Chrome 정보에 가시면 자신의 Chrome 버전이 나와있습니다.

버전에 맞게 chromedriver를 설치합니다.

 

 

 크롤링 

 

- 원하는 페이지로 들어갑니다. 저는 아래의 기사를 이용하였습니다.

news.v.daum.net/v/20210329142236043

 

삼성 '갤럭시S21' 국내 판매 100만 대 돌파.. "가격 인하책 통했다"

삼성전자 '갤럭시S21' 시리즈의 국내 판매량이 출시 57일 만에 100만 대를 돌파했다. 이는 전작인 '갤럭시S20'의 판매 기록을 한 달가량 앞당긴 것이다. 갤럭시S21은 삼성전자 5세대(5G) 스마트폰 가운

news.v.daum.net

 

- 가져올 내용을 아래와 같이 copy 합니다 (selector 사용)

<기사 본문 Copy>

 

- 해당 기사의 주소와 Copy selector를 넣어주면 기사 본문을 가져오게 됩니다.

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome('chromedriver') 
driver.implicitly_wait(1)

driver.get("https://news.v.daum.net/v/20210329142236043") #기사 주소
driver.implicitly_wait(1)

elem = driver.find_element_by_css_selector("#harmonyContainer") # Copy한 selector

print(elem.text)

반응형
반응형

안녕하세요! 오늘은 카카오페이 API 사용법에 대해 소개해 드리겠습니다.

저는 Flask를 활용하여 단건 결제를 구현해보았습니다.

카카오개발자 홈페이지에 들어가면 API 종류 별 설명을 보실 수 있습니다.

카카오 개발자 홈페이지에서 자세한 정보를 보고 싶은 분들은 아래 링크를 통하여 보시면 되고, 전체코드는 아래 깃허브에 올려놓겠습니다.

 

https://developers.kakao.com/docs/latest/ko/kakaopay/common

 

Kakao Developers

카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다.

developers.kakao.com

github.com/dpwls64/KAKAO-API

 

dpwls64/KAKAO-API

Contribute to dpwls64/KAKAO-API development by creating an account on GitHub.

github.com

 

˙  실행 과정 

 

 

˙  코드 설명 

 

해당 URL로 필수 요소들을 적어 보내주면 필요한 정보들을 받게 되고,  상태에 따라 approval_url / cancel_url / fail_url 로 이동하게 됩니다.

 

˙  실행 화면 

 

<QR 코드 또는 카톡 메시지로 결제가 가능합니다.>

 

<결제 화면>


 

<결제 완료>


사용자가 결제 도중 창을 닫게 되면 결제 취소가 됩니다.

<결제 취소>


결제하기 버튼을 누른 후 15분이 경과하면 결제 만료가 됩니다.

<결제 만료>

반응형

+ Recent posts