getTextSize() 함수는 지정한 문자열, 폰트 종류, 폰트 크기 등을 이용하여 문자열을 출력할 때 차지할 사각형 영역 크기 정보를 반환합니다. putText() 함수를 이용하여 특정 위치 좌표에 문자열을 출력하는 경우, 보통 문자열 길이와 크기에 따라 문자열이 차지하는 영역 크기가 달라지기 때문에 문자열이 한쪽으로 치우쳐서 나타날 수 있습니다. 그러나 getTextSize() 함수가 반환하는 문자열 영역 크기 정보를 이용하면 문자열 출력 위치를 적절하게 조절할 수 있습니다.
getTextSize() 함수를 이용하여 영상 중앙에 문자열을 출력하는 예제 코드를 코드 4-9에 나타냈습니다. 코드 4-9의 drawText2() 함수는 640×200 크기의 흰색 영상 정중앙에 “Hello, OpenCV” 문자열을 출력합니다. drawText2() 함수가 정의된 소스 파일은 내려받은 예제 파일 중 ch04/drawing 프로젝트에서 확인할 수 있습니다.
코드 4-9 영상의 중앙에 문자열 출력하기 [ch04/drawing]
01 void drawText2() 02 { 03 Mat img(200, 640, CV_8UC3, Scalar(255, 255, 255)); 04 05 const String text = "Hello, OpenCV"; 06 int fontFace = FONT_HERSHEY_TRIPLEX; 07 double fontScale = 2.0; 08 int thickness = 1; 09 10 Size sizeText = getTextSize(text, fontFace, fontScale, thickness, 0); 11 Size sizeImg = img.size(); 12 13 Point org((sizeImg.width - sizeText.width) / 2, (sizeImg.height + sizeText.height) / 2); 14 putText(img, text, org, fontFace, fontScale, Scalar(255, 0, 0), thickness); 15 rectangle(img, org, org + Point(sizeText.width, -sizeText.height), Scalar(255, 0, 0), 1); 16 17 imshow("img", img); 18 waitKey(0); 19 20 destroyAllWindows(); 21 }