RotatedRect類中的points、angle、width和height


class RotatedRect 
{    
	public:            
		RotatedRect();      //構造函數
		RotatedRect(const Point2f& center, const Size2f& size, float angle);
		RotatedRect(const CvBox2D& box);
	              
		void points(Point2f pts[]) const;      //返回矩形的4個頂點      
		Rect boundingRect() const;             //返回包含旋轉矩形的最小矩形     
		operator CvBox2D() const;              //轉換到舊式的cvbox2d結構
	
		float angle;    //旋轉角度,當角度爲0、90、180、270等時,矩形就成了一個直立的矩形  
		Point2f center; //矩形的質心      
		Size2f size;    //矩形的邊長      
}

類中定義了矩形的中心點center、尺寸size(包括width、height)、旋轉角度angle共三種成員變量;

 points()函數用於求矩形的4個頂點,

 boundingRect()函數求包含最小外接矩形的,與座標軸平行(或垂直)的最小矩形。

下圖爲成員變量的對應關係 

   根據上圖,需要關注以下幾個點:

  • Opencv採用通用的圖像座標系,左上角爲原點O(0,0),X軸向右遞增,Y軸向左遞增。

     單位是像素。

  • 矩形4個頂點位置的確定,是理解其他各變量的基礎,其中p[0]點是關鍵。

      頂點p[0]的位置可以這樣理解:

      1)如果沒有對邊與Y軸平行,則Y座標最大的點爲p[0]點,如矩形(2)(3)(4);

      2)如果有對邊與Y軸平等,則有兩個Y座標最大的點,此時,取左側的點爲p[0],如矩形(1)。

  • p[0]~p[3]按順時針依次排列。
  • p[0]到p[3]之間的距離爲寬width,其相鄰邊長爲高height。
  • 角度angle以穿過p[0],且平行於X軸的直線爲起始邊,按逆時針方向旋轉到寬邊p[0]p[3]所經過的角度。取負值,取值範圍爲(-90,0]。
  • 中心點center 爲矩形對角線的交點。


 

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