2016-12-27 112 views
1

片我是新来的OpenCV所以任何人都可以用更好的理解。我给here答案帮我没能获得什么是“角”,并在下面的代码OpenCV的检测纸

   if (approx.size() == 4 && 
       fabs(contourArea(Mat(approx))) > 1000 && 
       isContourConvex(Mat(approx))) 
      { 
       double maxCosine = 0; 

       for (int j = 2; j < 5; j++) 
       { 
        CGFloat angle; 
        double cosine = fabs(angle(approx[j%4], approx[j-2], approx[j-1])); 
        maxCosine = MAX(maxCosine, cosine); 
       } 

       if (maxCosine < 0.3) 
        squares.push_back(approx); 
      } 
“方”

回答

0

昨晚他的工作是我的问题,并得到了我的答案在这里它是

std::vector<std::vector<cv::Point> > squares; 
double angle(cv::Point pt1, cv::Point pt2, cv::Point pt0) { 
double dx1 = pt1.x - pt0.x; 
double dy1 = pt1.y - pt0.y; 
double dx2 = pt2.x - pt0.x; 
double dy2 = pt2.y - pt0.y; 
return (dx1*dx2 + dy1*dy2)/sqrt((dx1*dx1 + dy1*dy1)*(dx2*dx2 + dy2*dy2) + 1e-10); 

}

0

角度是一个在问题顶部的函数。它需要3分并返回一个角度值。

它看起来像正方形是某种向量的数据结构。我的C++是生疏了,所以我不能解析类型声明没有做一些调查研究(我还没有足够的咖啡了点。)