【opencv10】cv::Point:二維/三維點類

正如我們所知道的,opencv中的數據類型多由模板類進行創建,因此對於點類而言也是如此,支持各種類型如int,float等等的不同數據類型的point。點類的開銷相對是很少的,因爲該類上並未定義太多操縱,在需要的時候它們可以轉化爲更爲一般的類型,例如固定向量類or固定矩陣類(之後討論)。主要有兩種模板,一種是二維的點,一種是三維的點。

一般通過下面的語句來實例化point對象。

cv::Point2i
cv::Point3f
語句中最後的i,f等所表達的意思爲:
b是unsigned character,
s是short integer, 
i是32-bit integer,
f是32-bit floating-point number, 
d是64-bit floating-point number.

下表是一些point類直接支持的操作。

操作 例子(3可以換成2)
默認構造方法 cv::Point3i p;
拷貝構造方法 cv::Point3f p2( p1 );
帶初始化值的構造方法 cv::Point3d p( x0, x1, x2 );
轉換到固定向量類 (cv::Vec3f) p;
成員訪問 p.x; p.y;p.z(2的時候沒有z)
點積操作 float x = p1.dot( p2 )
雙精度點積操作 double x = p1.ddot( p2 )
矢量積操作 p1.cross( p2 )(只針對3維point)
判斷point是否在矩陣r中 p.inside( r )(只針對2維point)

這些類型可以被強制轉換成old C類型的CvPoint和CvPoint2D32f。如果一個point類的實例被強制轉換成CvPoint,那麼該值將被四捨五入。

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