獲取輪廓中心點,並且判斷是否在一個矩形區域內

最近在做圖像處理項目,需要對獲取到的多個輪廓進行篩選,之前的代碼是取最大的輪廓,而我真正想要取到的是第二大的那個輪廓,最大的輪廓需要被篩選掉,而最大的輪廓位於圖像左邊,所以增加了一個篩選的規則,取到每個輪廓的中心點,然後判斷中心點是否在圖像左邊的那個矩形區域內,以此篩選掉最大的輪廓。

bool CAlgorithmWind::GetContourCenter(vector<cv::Point> contour,cv::Point &p)
{
   //cv::Point p = 0;
   double sum_px=0,sum_py=0;
   for(unsigned int i = 0 ;i < contour.size(); i++)
   { 
     p=contour.at(i);
     sum_px+=p.x;
     sum_py+=p.y;
   } 
   p.x=sum_px/contour.size();
   p.y=sum_py/contour.size();
   //cout<<p.x <<p.y<<endl;
   CPoint point=CPoint(p.x,p.y);
   CPoint point1=CPoint(0,0);
   CPoint point2=CPoint(350,640);
   CRect kp (point1,point2);//構造一個長度350,寬度640的矩形區域

    BOOL flag = kp.PtInRect(point);//判斷中心點是否在這個矩形區域內
    if (flag)
    {
    return false;
    }

   else
    {
   return true; 
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章