[OpenCV] 텍스트 출력 – putText

[OpenCV] 텍스트 출력 – putText

이번 글에서는 영상에 텍스트를 출력하는 것을 알아보겠습니다.

텍스트를 출력하기 위해서는 putText 함수를 사용하면 됩니다.

/** 
@param img 영상
@param text 텍스트
@param org 출력 텍스트 좌측 하단 좌표
@param fontFace 폰트 타입, #HersheyFonts 참고
@param fontScale 폰트 크기 확대, 축소 비율
@param color 텍스트 색상
@param thickness 텍스트 선 두께
@param lineType 선 타입
@param bottomLeftOrigin true일 경우 영상의 좌측 하단이 (0, 0), false일 경우 좌측 상단이 (0, 0)
 */
void putText(InputOutputArray img, const String& text, Point org, int fontFace, double fontScale, Scalar color, int thickness = 1, int lineType = LINE_8, bool bottomLeftOrigin = false );

샘플 코드는 아래와 같습니다.

#include <iostream>
#include "opencv2/opencv.hpp"

#ifdef _DEBUG
#pragma comment(lib, "opencv_world440d.lib")
#else
#pragma comment(lib, "opencv_world440.lib")
#endif

using namespace std;
using namespace cv;

int main()
{
	Mat img(500, 1000, CV_8UC3, Scalar(255,255,255));
	if (img.empty())
	{
		cerr << "image open error" << endl;
		return -1;
	}

	putText(img, "FONT_HERSHEY_SIMPLEX", Point(50, 50), FONT_HERSHEY_SIMPLEX, 1, Scalar(0, 0, 0));
	putText(img, "FONT_HERSHEY_PLAIN", Point(50, 100), FONT_HERSHEY_PLAIN, 1, Scalar(0, 0, 0));
	putText(img, "FONT_HERSHEY_DUPLEX", Point(50, 150), FONT_HERSHEY_DUPLEX, 1, Scalar(0, 0, 0));
	putText(img, "FONT_HERSHEY_COMPLEX", Point(50, 200), FONT_HERSHEY_COMPLEX, 1, Scalar(0, 0, 0));
	putText(img, "FONT_HERSHEY_TRIPLEX", Point(50, 250), FONT_HERSHEY_TRIPLEX, 1, Scalar(0, 0, 0));
	putText(img, "FONT_HERSHEY_COMPLEX_SMALL", Point(50, 300), FONT_HERSHEY_COMPLEX_SMALL, 1, Scalar(0, 0, 0));
	putText(img, "FONT_HERSHEY_SCRIPT_SIMPLEX", Point(50, 350), FONT_HERSHEY_SCRIPT_SIMPLEX, 1, Scalar(0, 0, 0));
	putText(img, "FONT_HERSHEY_SCRIPT_COMPLEX", Point(50, 400), FONT_HERSHEY_SCRIPT_COMPLEX, 1, Scalar(0, 0, 0));
	putText(img, "FONT_ITALIC", Point(50, 450), FONT_ITALIC, 1, Scalar(0, 0, 0));
    
	imshow("img", img);

	waitKey();
	destroyAllWindows();

	system("pause");
	return 0;
}

실행 하면 아래와 같이 출력합니다.