더북(TheBook)

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    }

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.