正如我們所知道的,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,那麼該值將被四捨五入。