2018-01-30 13:56:08

▶ 영상 위에 그림 그리고 글쓰 


영상을 불러와서 그 위에 사각형을 그리고, 글씨를 적어보려고 한다. 아래와 같은 절차를 밟을 것이다.


1. 영상 읽기

2. 영상 띄우기

3. 영상 위에 사각형 그리기- cv::rectangle

4. 영상 위에 글쓰기- cv::putText


코드는 아래와 같다. 코드에 주석을 달아놓았으니 참고하자. 


#include <opencv2/core.hpp>

#include <opencv2/highgui.hpp>

#include <opencv2/imgproc.hpp> // rectangle과 putText 함수 사용을 위해

#include <iostream>


int main()

{

cv::Mat image;

image = cv::imread("cutlet.JPG");


cv::imshow("pork cutlet", image);


cv::rectangle(image, cv::Point(20, 60), cv::Point(400, 300), cv::Scalar(255, 0, 0), 3, 1, 0); // 사각형 그리기


cv::putText(image, "I like a pork cutlet!", cv::Point(30, 340), cv::FONT_HERSHEY_PLAIN, 2.0, cv::Scalar(0, 0, 255), 2); // 글쓰기


cv::imshow("new", image);


cv::waitKey(0);


    return 0;

}


실행 결과 나온 두 개의 이미지를 보자. 



왼쪽은 원본 이미지이고, 오른쪽은 사각형과 글이 추가된 이미지이다. 



▶ 좀 더 알고 넘어갈 것들


1) cv::rectangle(입력 이미지, 사각형의 왼쪽 모서리 위치, 사각형의 아래쪽 모서리 위치, 색상, 선 굵기, 선 유형, shift)


색상은 cv::Scalar(255, 0, 0)이라고 코딩했는데, blue(B), green(G), red(R) 순서이므로 파란색이 된 것이다. 만약 cv::Scalar(0, 255, 0)라고 코딩했다면 초록색의 사각형이 생겼을 것이다. 

입력 매개변수들 중에서 가장 마지막 것인 shift는 어떤 의미를 갖는지 잘 모르겠지만 간단히 0으로 설정하면 된다.  


2) cv::putText(입력 이미지, 입력 문구, 문구 시작 위치, 폰트, 글자크기, 글자색상, 글자굵기)


기본적으로 한글은 지원되지 않는다. 


<참고자료>

[1] 로버트 라가니에 지음, 이문호 옮김, "OpenCV를 활용한 컴퓨터 비전 프로그래밍 3/e", 에이콘