2016-12-27 111 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++是生疏了,所以我不能解析類型聲明沒有做一些調查研究(我還沒有足夠的咖啡了點。)