스크린샷 2025-07-09 100252.png

스크린샷 2025-07-09 102631.png

image.png


OpenCV_Project_Guideline (1).pdf

OpenCV 를 활용한 차량 번호판 검출 및 OCR 문자 인식 시스템 개발

이미지 로드 및 전처리

: 차량 이미지를 로드하고, 가우시안 블러를 적용하여 노이즈를 제거

import cv2
import matplotlib.pyplot as plt

# 1. "car.jpg" 이미지를 cv2.imread()를 사용하여 로드
img = cv2.imread("car3.jpg")
if img is None:
    raise ValueError("이미지를 불러올 수 없습니다. 파일 경로를 확인하세요.")

# 2. 로드된 이미지를 cv2.cvtColor()를 사용하여 BGR에서 그레이스케일로 변환합니다.
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 3. 그레이스케일 이미지에 cv2.GaussianBlur()를 적용하여 노이즈를 제거. 커널 크기는 (5, 5)로 설정하고 sigmaX는 0으로 설정합니다.
blur = cv2.GaussianBlur(gray, (5, 5), 0)

plt.figure(figsize=(10, 8))
plt.imshow(blur, cmap='gray')
plt.title("Blurred Grayscale Image")
plt.axis('off')
plt.show()

image.png

이진화

: 블러 처리된 이미지에서 적절한 임계값을 사용하여 문자와 배경을 분리하는 이진 이미지를 생성합니다. 흰 배경에 검은색 숫자를 얻도록 이진화 방법을 선택합니다.

thresh = cv2.adaptiveThreshold(
    blur,
    maxValue=255,
    adaptiveMethod=cv2.ADAPTIVE_THRESH_GAUSSIAN_C,
    thresholdType=cv2.THRESH_BINARY_INV,
    blockSize=15,
    C=5
)

plt.figure(figsize=(12, 10))
plt.imshow(thresh, cmap='gray')
plt.title("Adaptive Thresholded Image (Black Numbers on White Background)")
plt.axis('off')
plt.show()

: cv2.adaptiveThreshold 함수를 사용하여 이미지를 이진화