OpenCV基本結構(Point、Size、Rect等)

OpenCV有定義一些基本結構,像Point、Point2f、Size、Size2f、Rect、RotatedRect、Scalar等,方便我們進行影像處理,這些結構通常都當參數輸入,或是函式內部計算之用。

Point:2維整數點類別,通常用於影像的座標點,成員有x和y,要是輸入浮點數的話,則四捨五入取整數,以下為建構式和最基本的兩種賦值方法:

Point(int x, int y) //建構式
Point pt1(20,30);
Point pt2;
pt2.x = 20;
pt2.y = 30;

Point2f:2維浮點數點類別,通常用於幾何計算,用法和Point雷同,只是x和y是浮點數。

Point3i、Point3f、Point3d代表3維點x、y、z,而成員型態分別為int、float、double。


Size:尺寸類別,成員有width和height,分別表示寬和長(int型態),可用area()函式得到面積,以下為建構式最基本兩種賦值方法:

Size(int width, int height) //建構式
Size size1(150, 100);
Size size2;
size2.width = 150;
size2.height = 100;
int myArea = size2.area();

Size2f:尺寸類別,和Size用法雷同,只是width和height為float型態。


Rect:矩形類別,成員有x、y、width、height,分別表示左上角頂點的x座標,左上角頂點的y座標,矩形寬、矩形高,可用area()函式得到面積,以下為建構式和最基本的兩種賦值方法:

Rect(int x, int y, int width, int height) //建構式
Rect rect1(20,30,150,100);
Rect rect2;
rect2.x = 20;
rect2.y = 30;
rect2.width = 150;
rect2.height = 100;
int myRectArea = rect2.area();

RotatedRect:斜矩形類別,成員有矩形的質心center(Point2f類別),四周長size(Size2f類別)、旋轉角度angle(float類別),可用points()函式得到四個頂點,以下為建構式和最基本的兩種賦值方法:

RotatedRect(const Point2f &center, const Size2f &size, float angle) //建構式
RotatedRect rRect1(Point2f(150,150), Size2f(100,50), 30.0);
RotatedRect rRect2; 
rRect2.center = Point2f(150,150);
rRect2.size = Size2f(100,50);
rRect2.angle = 30.0;
Point2f vertices[4];
rRect2.points(vertices);

Scalar:代表4元素的向量,一般用於像素顏色,以下設定給灰階圖和彩色圖像素的方式:

  • Scalar(a, b, c):省略透明通道,由於OpenCV的彩色影像通常為BGR的順序,a代表藍色、b代表綠色、c代表紅色。
  • Scalar(a):通常用於灰階圖,像素強度為a。

回到首頁

回到OpenCV教學