-
그리기 함수 - 다각형Programming/OpenCV 2015. 4. 19. 17:05
그리기 함수 다각형
cvFillPoly
void cvFillPoly( CvArr* img, CvPoint** pts, int* npts, int contours, CvScalar color, int line_type = 8 );
다각형(polygon)으로 된 윤곽의 내부를 채우는 함수이다.- img: 처리하고자 하는 원본 이미지
- pts: 다각형을 가리키는 포인터의 배열
- npts: 다각형의 꼭지점의 갯수
- contours: 채워진 지역을 감싸는 윤곽의 개수
- color: 다각형 색깔
- line_type: 다각형의 윤곽을 구성하는 선의 종류
- 8: 8-connected line
- 4: 4-connected line
- CV_AA: Anti-Aliasing 된 선
cvFillConvexPolyvoid cvFillConvexPoly( CvArr* img, CvPoint* pts, int* npts, CvScalar color, int line_type = 8 );
볼록한 다각형으로 된 윤곽의 내부를 채우는 함수, cvFillPoly()보다 더 빠른 속도로 처리된다.
- img: 처리하고자 하는 원본 이미지
- pts: 다각형을 가리키는 포인터의 배열
- npts: 다각형의 꼭지점의 갯수
- color: 다각형 색깔
- line_type: 다각형의 윤곽을 구성하는 선의 종류
- 8: 8-connected line
- 4: 4-connected line
- CV_AA: Anti-Aliasing 된 선
cvPolyLine
void cvPolyLine( CvArr* img, CvPoint* pts, int* npts, int contours, int is_closed, CvScalar color, int thickness = 1, int line_type = 8 );
간단한 다각형을 그리거나 두꺼운 다각형을 그린다.(외곽 선만)- img: 처리하고자 하는 원본 이미지
- pts: 다각형을 가리키는 포인터의 배열
- npts: 다각형의 꼭지점의 갯수
- contours: 채워진 지역을 감싸는 윤곽의 개수
- is_closed: 값이 true이면 각 다각형의 시작점과 끝점을 잇는 선분을 추가로 그린다. 닫힌 도형인지 아닌지를 나타냄
- color: 다각형 색깔
- thickness: 다각형 두께
- line_type: 다각형의 윤곽을 구성하는 선의 종류
- 8: 8-connected line
- 4: 4-connected line
- CV_AA: Anti-Aliasing 된 선
ex)#include "highgui.h" #include "cv.h" int main() { IplImage *dstImage; dstImage = cvCreateImage(cvSize(1024, 1000), IPL_DEPTH_8U, 3); cvSet(dstImage, CV_RGB(255, 255, 255)); CvPoint pts1[4] = { {100, 100}, {200, 100}, {200, 200}, {100, 200} }; CvPoint pts2[3] = { {300, 200}, {400, 100}, {400, 200} }; CvPoint pts3[5] = { {500, 150}, {600, 100}, {700, 150}, {650, 200}, {550, 200} }; CvPoint pts4[4] = { {100, 400}, {200, 400}, {200, 500}, {100, 500} }; CvPoint pts5[3] = { {300, 500}, {400, 400}, {400, 500} }; CvPoint pts6[5] = { {500, 450}, {600, 400}, {700, 450}, {650, 500}, {550, 500} }; CvPoint pts7[4] = { {100, 700}, {200, 700}, {200, 800}, {100, 800} }; CvPoint pts8[3] = { {300, 800}, {400, 700}, {400, 800} }; CvPoint pts9[5] = { {500, 750}, {600, 700}, {700, 750}, {650, 800}, {550, 800} }; CvPoint *polygon[3] = { pts1, pts2, pts3 }; int npts[3] = {4, 3, 5}; cvPolyLine(dstImage, polygon, npts, 3, 1, CV_RGB(0, 0, 255)); // closed ployline CvPoint *polygon2[3] = { pts4, pts5, pts6 }; int npts2[3] = {4, 3, 5}; cvPolyLine(dstImage, polygon2, npts2, 3, 0, CV_RGB(255, 0, 0)); cvFillConvexPoly(dstImage, pts5, 3, CV_RGB(255, 0, 0)); CvPoint *polygon3[3] = { pts7, pts8, pts9 }; int npts3[3] = {4, 3, 5}; cvPolyLine(dstImage, polygon3, npts3, 3, 1, CV_RGB(0, 255, 0)); // closed ployline cvFillConvexPoly(dstImage, pts7, 4, CV_RGB(0, 255, 0)); cvFillConvexPoly(dstImage, pts8, 3, CV_RGB(0, 255, 0)); cvFillConvexPoly(dstImage, pts9, 5, CV_RGB(0, 255, 0)); cvNamedWindow("Drawing Graphics", CV_WINDOW_AUTOSIZE); cvShowImage("Drawing Graphics", dstImage); cvWaitKey(0); cvDestroyAllWindows(); cvReleaseImage(&dstImage); return 0; }
'Programming > OpenCV' 카테고리의 다른 글
마우스 이벤트 (0) 2015.04.19 그리기 함수 - 직선, 사각형, 원, 타원 (0) 2015.04.19 cvSplit, cvMerge, cvFlip (0) 2015.04.14 IplImage 구조체 (0) 2015.04.12 CvMat 행렬 구조체 (0) 2015.03.27