ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 그리기 함수 - 다각형
    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 된 선

    cvFillConvexPoly
    void 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

    댓글

Designed by Tistory.