OpenCV에서는 putText() 함수를 사용하여 이미지 위에 텍스트를 손쉽게 추가할 수 있습니다. 이 함수는 <imgproc.hpp> 헤더 파일에 정의되어 있으며, 이미지 처리 작업에서 라벨링이나 주석을 달 때 매우 유용하게 활용됩니다.
텍스트를 삽입하려면 먼저 이미지를 담을 행렬(Matrix)을 선언해야 합니다. 이번 예제에서는 실제 이미지 파일을 불러오는 대신 흰색으로 채워진 빈 행렬을 생성하고, 그 위에 텍스트를 출력하는 방식으로 진행합니다.
텍스트를 행렬에 넣기 위해서는 다음과 같은 요소들을 지정해야 합니다.
- 텍스트가 시작될 위치(좌표)
- 사용할 글꼴(Font)
- 글자 색상
- 글자 굵기(Font Weight)
putText() 함수 기본 문법
putText(image, "Text in Images", text_position, FONT_HERSHEY_COMPLEX, font_size, font_Color, font_weight);
각 인자의 의미는 다음과 같습니다.
- image: 텍스트가 삽입될 대상 이미지(행렬)
- "Text in Images": 화면에 출력할 문자열
- text_position: 텍스트가 시작될 좌표(Point)
- FONT_HERSHEY_COMPLEX: 적용할 글꼴 스타일
- font_size: 글자 크기
- font_Color: 글자 색상(Scalar 값, BGR 순서)
- font_weight: 글자 굵기
예제 코드
다음 프로그램은 OpenCV에서 이미지에 텍스트를 삽입하는 전체 과정을 보여줍니다.
#include<iostream>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<string>
using namespace cv;
using namespace std;
int main() {
// 흰색으로 채워진 빈 행렬 생성 //
Mat image = Mat(400, 400, CV_8UC3, Scalar(255, 255, 255));
Point text_position(80, 80);// 텍스트 위치 선언 //
int font_size = 1;// 글자 크기 선언 //
Scalar font_Color(0, 0, 0);// 글자 색상 선언(검정색) //
int font_weight = 2;// 글자 굵기 선언 //
// 행렬에 텍스트 삽입 //
putText(image, "Text in Images", text_position, FONT_HERSHEY_COMPLEX, font_size, font_Color, font_weight);
imshow("Image", image);// 이미지 출력 //
waitKey(0);// 키 입력 대기 //
return 0;
}코드 설명
위 코드에서는 Mat(400, 400, CV_8UC3, Scalar(255, 255, 255)) 구문을 통해 400×400 크기의 3채널 이미지를 생성하고 모든 픽셀을 흰색(255, 255, 255)으로 초기화합니다. 이후 Point(80, 80) 좌표에 검정색 텍스트를 지정된 글꼴과 굵기로 그려 넣습니다.
imshow() 함수는 결과 이미지를 창에 표시하며, waitKey(0)는 사용자가 키를 누를 때까지 프로그램이 종료되지 않고 대기하도록 합니다.
실행 결과
프로그램을 실행하면 흰색 배경 위에 "Text in Images"라는 텍스트가 출력된 이미지 창이 나타납니다.

이처럼 putText() 함수 하나만으로도 이미지에 원하는 텍스트를 자유롭게 추가할 수 있으며, 글꼴·크기·색상·굵기를 조합해 다양한 스타일의 주석을 만들 수 있습니다.