728x90
OpenCV 이미지 위에 텍스트 추가하기 (cv2.putText())
개요
이미지 처리에서 텍스트를 삽입하는 기능은 다양한 용도로 활용됩니다. 예를 들어, 데이터 시각화, 객체 분류 결과 표시, 이미지 주석 추가 등에 사용할 수 있습니다. OpenCV에서는 cv2.putText()
함수를 사용하여 이미지 위에 텍스트를 삽입할 수 있습니다.
이 글에서는 cv2.putText()
의 기본적인 사용법과 다양한 설정 옵션을 실습 예제와 함께 설명하겠습니다.
1. cv2.putText()
함수 개요
cv2.putText()
함수는 OpenCV에서 제공하는 텍스트 추가 함수로, 다음과 같은 형식으로 사용됩니다.
cv2.putText(img, text, org, font, fontScale, color, thickness, lineType)
매개변수 설명
img
: 텍스트를 추가할 이미지 (NumPy 배열)text
: 추가할 문자열org
: 텍스트의 시작 좌표 (x, y)font
: 글꼴 (예:cv2.FONT_HERSHEY_SIMPLEX
)fontScale
: 글자의 크기 (배율 값)color
: 글자 색상 (BGR 값)thickness
: 글자 두께 (픽셀 단위)lineType
: 선의 형태 (예:cv2.LINE_AA
)
2. 기본적인 텍스트 추가 예제
아래 예제는 OpenCV를 사용하여 이미지 위에 텍스트를 추가하는 방법을 보여줍니다.
import cv2
import numpy as np
# 빈 이미지 생성 (검은 배경)
img = np.zeros((500, 800, 3), dtype=np.uint8)
# 텍스트 추가
cv2.putText(img, 'Hello, OpenCV!', (50, 250), cv2.FONT_HERSHEY_SIMPLEX,
2, (255, 255, 255), 3, cv2.LINE_AA)
# 이미지 표시
cv2.imshow('Text Example', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
코드 설명
np.zeros((500, 800, 3), dtype=np.uint8)
: 500x800 크기의 검은 배경 이미지를 생성합니다.cv2.putText()
를 사용하여 흰색 (255, 255, 255
) 텍스트를 추가합니다.cv2.imshow()
를 이용해 이미지를 화면에 표시합니다.cv2.waitKey(0)
: 키 입력을 대기합니다.cv2.destroyAllWindows()
: 창을 닫습니다.
3. 다양한 폰트 스타일 적용
OpenCV는 여러 가지 글꼴 스타일을 지원합니다. 다음은 사용 가능한 글꼴 목록입니다.
cv2.FONT_HERSHEY_SIMPLEX
cv2.FONT_HERSHEY_PLAIN
cv2.FONT_HERSHEY_DUPLEX
cv2.FONT_HERSHEY_COMPLEX
cv2.FONT_HERSHEY_TRIPLEX
cv2.FONT_HERSHEY_COMPLEX_SMALL
cv2.FONT_HERSHEY_SCRIPT_SIMPLEX
cv2.FONT_HERSHEY_SCRIPT_COMPLEX
아래 예제에서는 여러 폰트 스타일을 적용하여 텍스트를 출력합니다.
import cv2
import numpy as np
# 빈 이미지 생성
img = np.zeros((600, 800, 3), dtype=np.uint8)
fonts = [cv2.FONT_HERSHEY_SIMPLEX, cv2.FONT_HERSHEY_PLAIN,
cv2.FONT_HERSHEY_DUPLEX, cv2.FONT_HERSHEY_COMPLEX,
cv2.FONT_HERSHEY_TRIPLEX, cv2.FONT_HERSHEY_SCRIPT_SIMPLEX]
for i, font in enumerate(fonts):
cv2.putText(img, f'Font {i+1}', (50, 50 + i * 80), font, 1.5, (255, 255, 255), 2, cv2.LINE_AA)
cv2.imshow('Different Fonts', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
코드 설명
- 다양한 폰트 스타일을 리스트에 저장하고
for
문을 이용해 여러 텍스트를 출력합니다. cv2.putText()
를 반복 호출하여 각 폰트를 화면에 표시합니다.
4. 다양한 색상 및 두께 조정
텍스트의 색상과 두께를 변경하면 가독성을 높일 수 있습니다. OpenCV에서는 BGR 색상 형식을 사용합니다.
색상 예제
BLUE = (255, 0, 0)
GREEN = (0, 255, 0)
RED = (0, 0, 255)
WHITE = (255, 255, 255)
다양한 색상과 두께를 적용하는 예제입니다.
import cv2
import numpy as np
img = np.zeros((400, 800, 3), dtype=np.uint8)
colors = [(255, 0, 0), (0, 255, 0), (0, 0, 255), (255, 255, 255)]
for i, color in enumerate(colors):
cv2.putText(img, f'Color {i+1}', (50, 50 + i * 80), cv2.FONT_HERSHEY_SIMPLEX,
1.5, color, i+1, cv2.LINE_AA)
cv2.imshow('Text Colors', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
코드 설명
colors
리스트를 만들어 여러 색상을 지정합니다.thickness
값을i+1
로 설정하여 글자 두께를 다르게 설정합니다.
5. 정렬 및 위치 조정
텍스트의 위치를 중앙 또는 우측 정렬하려면 cv2.getTextSize()
를 사용하여 텍스트의 크기를 계산할 수 있습니다.
import cv2
import numpy as np
img = np.zeros((500, 800, 3), dtype=np.uint8)
text = "Centered Text"
font = cv2.FONT_HERSHEY_SIMPLEX
font_scale = 2
thickness = 3
color = (255, 255, 255)
# 텍스트 크기 계산
(text_width, text_height), baseline = cv2.getTextSize(text, font, font_scale, thickness)
# 중앙 정렬
x = (img.shape[1] - text_width) // 2
y = (img.shape[0] + text_height) // 2
cv2.putText(img, text, (x, y), font, font_scale, color, thickness, cv2.LINE_AA)
cv2.imshow('Centered Text', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
코드 설명
cv2.getTextSize()
를 사용해 텍스트 크기를 계산합니다.- 이미지 크기에 맞춰 중앙 좌표를 구한 후 텍스트를 배치합니다.
결론
cv2.putText()
함수는 이미지 위에 텍스트를 추가하는 강력한 기능을 제공합니다. 글꼴 스타일, 색상, 두께, 위치 조정 등 다양한 옵션을 활용하여 가독성을 높일 수 있습니다. 이번 포스팅에서 배운 내용을 활용하여 다양한 이미지에 텍스트를 추가해 보시기 바랍니다.
728x90
'Python OpenCV' 카테고리의 다른 글
OpenCV로 색상 히스토그램 평탄화 (cv2.equalizeHist()) (0) | 2025.03.06 |
---|---|
OpenCV 이미지 히스토그램 분석 (cv2.calcHist()) (0) | 2025.03.05 |
OpenCV 선, 원, 사각형 그리기 (0) | 2025.03.03 |
OpenCV를 활용한 엣지 검출 (Canny, Sobel, Laplacian) (0) | 2025.03.02 |
OpenCV를 활용한 이미지 필터링 (블러링, 가우시안 필터, 샤프닝) (0) | 2025.03.01 |