본문 바로가기
Education/Bit 18th

OpenCV 화면에 그리기 함수

by ★용호★ 2009. 12. 10.

2009년 12월 10일 목요일

직선과 사각형

- 직선
void cvLine(CvArr* array, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness = 1, int connectivity = 8);

첫 번째 인자는 CvArr* 타입이며, 보통 IplImage* 타입의 영상이 인자로 넘어온다.
다음 두개의 인자는 CvPoint(정수형 멤버 x,y가 있는 간단한 구조체) 타입으로 직선의 시작과 끝 좌표를 지정한다.
 → CvPoint 구조체는 두개의 정수값과 생성자 함수를 이용하여 cvPoint(int x, int y)형태로 간단하게 만들 수 있다.

다음 인자 color는 CvScalar 타입으로 정의되어 있다.
 → OpenCv에서는 세 개의 숫자값을 인자로 받는 CV_RGB(r, g, b) 매크로를 이용하여 간단하게 CvScalar 구조체를 생성할 수 있다.

마지막 두 인자는 선택 사항이다. thickness는 직선의 두께(픽셀 단위)를 나타내며 connectivity는 앤티 에일리어싱(anti-aliasing) 방법을 설정한다.
 → connectivity의 기본값은 "8-이웃"방법이며, 이 경우 계단 현상이 현저히 사라진 부드러운 직선을 그린다. "4-이웃"방법의 경우 대각방향으로는
  계단 현상이 발생할 수 있으나 속도는 매우 빨라진다.

- 사각형
void cvRectangle(CvArr* array, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness = 1);


원과 타원

- 원
void cvCircle(CvArr* array, CvPoint center, int radius, CvScalar color, int thickness = 1, int connectivity = 8);

- 타원
void cvEllipse(CvArr* array, CvPoint pt1, CvSize axes, double angle, double start_angle, double end_angle,
                   CvScalar color, int thickness = 1, int line_type  8);

함수의 세번째 axes는 CvSize 타입이다. CvSize는 정수형 멤버 width와 height를 가지고 있고, cvSize(int height, int width) 형태의 생성자 함수를 이용하여 간단하게 생성할 수 있다.
height와 width값은 타원의 주축과 종축의 길이를 의미한다.

네번째 인자 angle은 수평선(x축)으로부터 반시계 방향으로 주축의 기울기 각도를 나타낸다. start_angle과 end_angle은 호를 그리고자 할때 시작점의 각도와 종점의 각도를 나타낸다.


글꼴과 글자

void cvPutText(CvArr* array, const char* text, CvPoint origin, const CvFont* font, CvScalar color);

origin을 좌하단으로 하는 사각형 영역에 color 색상을 이용하여 text문자열을 출력한다. 이 함수는 특히 CvFont* 타입의 font 인자를 주의해서 설정해야 한다.
기본적으로 CvFont* 타입을 생성하기 위해서는 cvInitFont() 함수를 사용한다. 이 함수는 화면에 나타내고자 하는 특정 폰트에 대한 정보들을 인자로 받는다.

cvputText()함수에 전달할 CvFont*를 새로 생성하기 위해서는 일단 CvFont 타입의 변수를 하나 선언한다. 그리고 그 변수의 주소를 cvInitFont()함수의 인자로 전달한다.

void cvInitFont(CvFont* font, int font_face, double hscale, double vscale, double shear = 0, int thickness = 1, int line_type = 8);

cvInitFont()함수는 이미 존재하는 CvFont 구조체 변수를 초기화하는 역할을 한다. 즉, 미리 CvFont타입의 변수를 선언하고, 이 변수의 주소값을 cvInitFont()함수의 첫번쨰 인자로
전달해야 한다.
hscale와 vscale 인자는 1.0 또는 0.5 값만 가질 수 있으며, 이는 특정 폰트의 기본 크기를 그대로 사용할지 또는 너비(또는 높이)의 반 크기만큼 사용할지를 결정한다.
다섯번째 인자 shear는 해당 폰트의 기울기를 지정한다. shear 값을 0.0으로 설정하면 전혀 기울여 쓰지 않는다. 최대값에 해당하는 1.0을 설정하면 약 45도 기울어진 폰트를 생성한다.

'Education > Bit 18th' 카테고리의 다른 글

DirectShow 정보  (0) 2009.12.10
OpenCV 관련 사이트  (0) 2009.12.10
OpenCV 참조 dll  (0) 2009.12.10
윈도우 모바일 어플리케이션 개발  (0) 2009.12.09
ARToolkit 설치하기  (0) 2009.12.07

댓글