이번 글에서는 영상에 텍스트를 출력하는 것을 알아보겠습니다.
텍스트를 출력하기 위해서는 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;
}
실행 하면 아래와 같이 출력합니다.