如何在图像中获取检测到的矩形的顶点

时间:2014-06-20 18:09:14

标签: opencv rectangles vertices

我是opencv的新手,我需要检测图像中的矩形,获取其顶点并使用这些点,我必须裁剪该图像。通过查找轮廓来检测矩形。现在我想得到顶点(角点值)。任何人都可以指导或分享代码吗?

我的代码是:

 CvSeq* contours;  //hold the pointer to a contour in the memory block
 CvSeq* result;   //hold sequence of points of a contour
 CvMemStorage *storage = cvCreateMemStorage(0); //storage area for all contours

 //finding all contours in the image
 cvFindContours(imgGrayScale, storage, &contours, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));

 //iterating through each contour
 while(contours)
 {
     //obtain a sequence of points of contour, pointed by the variable 'contour'
     result = cvApproxPoly(contours, sizeof(CvContour), storage, CV_POLY_APPROX_DP, cvContourPerimeter(contours)*0.02, 0);

      //if there are 4 vertices in the contour(It should be a rectangle)
     if(result->total==4 )
     {
         //iterating through each point
         CvPoint *pt[4];
         for(int i=0;i<4;i++)
            {
                pt[i] = (CvPoint*)cvGetSeqElem(result, i);
         }

         //drawing lines around the rectangle
         cvLine(img, *pt[0], *pt[1], cvScalar(0,255,0),4);
         cvLine(img, *pt[1], *pt[2], cvScalar(0,255,0),4);
         cvLine(img, *pt[2], *pt[3], cvScalar(0,255,0),4);
         cvLine(img, *pt[3], *pt[0], cvScalar(0,255,0),4);
     }
      //obtain the next contour
     contours = contours->h_next;
}

0 个答案:

没有答案