文章目錄
- Point 模板類
- 基本操作函式
- Point 輸出案例
Point 模板類
opencv中的資料型別多由模板類進行創建,因此對于點類而言也是如此,支持各種型別如int,float等等的不同資料型別的point,
點類的開銷相對是很少的,因為該類上并未定義太多操縱,在需要的時候它們可以轉化為更為一般的型別,例如固定向量類or固定矩陣類(之后討論),主要有兩種模板,一種是二維的點Point2x,一種是三維的點Point3x,
陳述句中最后的 x 所表達的意思是他是多選的,可選項如下:
| 選項 | 含義 |
|---|---|
| b | unsigned character |
| s | short integer |
| i | 32-bit integer |
| f | 32-bit floating-point number |
| d | 64-bit floating-point number |
基本操作函式
| 操作 | 例子(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 CV型別的CvPoint和CvPoint2D32f,如果一個point類的實體被強制轉換成CvPoint,那么該值將被四舍五入,
Point 輸出案例
代碼如下:
#include <iostream>
#include <math.h>
#include <opencv2/opencv.hpp>
#include<opencv2/highgui.hpp>
#include <opencv2/highgui/highgui_c.h>
using namespace std;
using namespace cv;
int main()
{
vector<Point2f> vp2f;
vp2f.push_back(Point2f(2, 3));
vp2f.push_back(Point2f(4, 6));
vp2f.push_back(Point2f(8, 12));
cout << "【二維點向量】" << endl << vp2f << endl;
vector<Point3f> vp3f(10);
for (size_t i = 0; i < vp3f.size(); i++)
{
vp3f[i] = Point3f((float)i, (float)(i * i), (float)(i + 1));
}
cout << "【三維點向量】" << endl << vp3f << endl;
system("pause");
return 0;
}
運行結果為:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/347233.html
標籤:其他
