[스터디노트] OpenCV - 명함 검출과 인식 1

Hwan·2024년 2월 12일

OpenCV

목록 보기
11/15

OpenCV 응용 - 명함 검출과 인식

(1) 명함 검출과 인식 개요

명함 검출과 인식 수행 과정

  • 일반적인 명함 사진으로 진행

    • 명함은 흰색이고, 배경은 충분히 어둡다
    • 명함을 각진 사각형 모양, 가로 세로 비율은 9:5
    • 명함은 충분히 크게 촬영됨

  • 컬러 영상을 그레이스케일 영상으로 변환하여 사용

    • 컬러 정보가 크게 중요하지 않은 경우, 그레이스케일 영상을 변환하여 처리하는 것이 메모리 사용량, 연산 시간 측면에서 유리함
    • OpenCVdml cv2.imread()에서 그레일스케일 형식으로 영상 불러오기 or cv2.cvtColor() 사용하여 그레이스케일 형식으로 변경 가능

(2) 영상의 이진화

영상의 이진화(binarization)

  • 영상의 픽셀 값을 0 또는 1(255)로 만드는 연산

    • 배경(background) vs 객체(object)
    • 관심 영역 vs 비관심 영역
  • 그레이스케일 영상의 이진화
    x,y의 픽셀 값이 T(임계값)보다 작으면 0, 크면 1 -> 임계값 설정이 중요!

  • 자동 임계값 결정 방법 : 오츠(Otsu) 방법

    • 입력 영상이 배경과 객체 두 개로 구성되어 있다고 가정 -> bimodal histogram
    • 두 픽셀 분포의 분산의 합이 최소가 되는 임계값을 선택
    • 효과적인 수식 전개와 재귀식을 이용하여 빠르게 임계값을 결정
  • OpenCV 영상 이진화(임계값) 함수

    • 임계값을 이용해 이진화하는 데 사용
  • 오츠 방법을 이용한 명함 영상의 자동 이진화 예제

import cv2
import sys

# 영상 불러오기
src = cv2.imread('./data/namecard1.jpg')

if src is None:
    print('Image load failed')
    sys.exit()

# 입력 영상을 그레이스케일 영상으로 변환
src_gray = cv2.cvtColor(src, cv2.COLOR_BGR2GRAY)

# 자동 이진화
th, src_bin = cv2.threshold(src_gray, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
print(th)

cv2.imshow('src', src)
cv2.imshow('src_bin', src_bin)
cv2.waitKey()
cv2.destroyAllWindows()

>>> 133.0

profile
Hi.

0개의 댓글