opencv的基本資料結構

2021-09-26 03:34:45 字數 4475 閱讀 5326

vec

scalar

point

size

rect

rotatedrect

vec類

1.1 基本概念

vec是乙個模板類,主要用於儲存數值向量。

1.2 用法

(1)可用它來定義任意型別的向量

vecmyvector; // 定義乙個存放8個double型變數的向量

(2)使用[ ]訪問vec向量成員

myvector[0]=0;

(3)可使用以下預定義的型別

typedef vecvec2b;

typedef vecvec3b;

typedef vecvec4b;

typedef vecvec2s;

typedef vecvec3s;

typedef vecvec4s;

typedef vecvec2i;

typedef vecvec3i;

typedef vecvec4i;

typedef vecvec2f;

typedef vecvec3f;

typedef vecvec4f;

typedef vecvec6f;

typedef vecvec2d;

typedef vecvec3d;

typedef vecvec4d;

typedef vecvec6d;

//可以直接運用

vec3b mychar;

mychar[2]=『cat』;

vec6d mydata;

for(int i=0; i(4)vec支援的運算如下:

複製**

v1 = v2 + v3

v1 = v2 - v3

v1 = v2 * scale

v1 = scale * v2

v1 = -v2

v1 += v2

v1 == v2, v1 != v2

norm(v1) (euclidean norm)//歐幾里得範數

//求mydata的歐幾里得範數

norm(mydata);

1.3 示例**

(1)向量定義與元素的訪問

// vec

cv::vecmyvector;

for(int i=0; i(2)基本運算

cv::vecv1,v2,v3;

for(int i=0; i返回向量v2的行數

v2[i] = i;

v3[i] = i+1;

}

v1 = v2 + v3;  

cout<<"v2 = "2.1 基本概念

scalar是乙個從vec類引出的模板類,是乙個可存放4個元素的向量,廣泛用於傳遞和讀取影象中的畫素值。

2.2 用法

可使用訪問scalar值。或使用如下方式定義bgr三個通道的值。

cv:: scalar( b, g, r )

2.3 示例**

(1)cv::scalar結構

cv::scalar myscalar;

myscalar = cv::scalar(0,255,0);

cout<<"myscalar = "因此,訪問彩色畫素中元素的方法如下:

cout<<"b chanel of pixel is = "3.1 基本概念

常用於表示2維座標(x,y)。

3.2 用法

(1)影象座標

對影象而言,我們可以這樣定義:

cv::point pt;

pt.x = 10;

pt.y = 8;

或者:point pt = point(10,8);

point pt(10,8);

(2)或使用如下預定義:

typedef point_ point2i;

typedef point2i point; //上面使用point

typedef point_ point2f;

typedef point_ point2d;

可見point_、point2i、point互相等價,point_和point2f互相等價,point_和point2d互相等價。

(3)基本運算

複製**

pt1 = pt2 + pt3;

pt1 = pt2 - pt3;

pt1 = pt2 * a;

pt1 = a * pt2;

pt1 += pt2;

pt1 -= pt2;

pt1 *= a;

double value = norm(pt); // l2 norm

pt1 == pt2;

pt1 != pt2;

3.3 示例**

(1)設定座標點

// point

point pt;

pt.x = 300;

pt.y = 498;

//或者

//point pt (300,498);

scalar pix = pimg.at(pt);

cout<<「pix(」<(2)各類運算

cv::point pt1(10,20);

cv::point pt2(2,3);

cout<<"pt1 = "<2 = "<24.1 基本概念

模板類size可表示一幅影象或乙個矩形的大小。它包含寬、高2個成員:width , height還有乙個有用的面積函式area()。

4.2 用法

cv::size size(int w, int h);

//或者

cv::size size;

size.width = w;

size.height = h;

4.3 示例**

// size

cv::size size1(6,3);

cv::size size2;

size2.width = 4;

size2.height = 2;

cv::mat mat1(size1,cv_8uc1,cv::scalar(0));

cv::mat mat2(size2,cv_8uc3,cv::scalar(1,2,3));

cout<<"mat1 = "5.1 基本概念

rect是另乙個用於定義2維矩形的模板類。它由兩個引數定義:

矩形左上角座標: (x,y)

矩形的寬和高: width, height

rect可以用來定義影象的roi區域。

5.2 用法

cv::rect rect(x, y, width, height);

5.3 示例**

rotatedrect類

6.1 基本概念

最後乙個基本資料類是一種特殊的矩形稱為rotatedrect。這個類通過中心點,寬度和高度和旋轉角度來表示乙個旋轉的矩形。

6.2 用法

旋轉矩形類的建構函式:

rotatedrect(const point2f& center, const size2f& size, float angle);

引數:center:中心點座標point2f型別

size:矩形的寬度和高度,size2f型別

angle:順時針方向的旋轉角度(單位°),float型別

6.3 示例**

cv::point2f center(100, 100);

cv::size2f size(100, 50);

float bn = 10;

float angle[3];

for (int i = 0; i < 3; i++)

angle[i] = bn+i*20;//angle=10,30,50

for (int i = 0; i < 3; i++)

waitkey(0); //system("pause")亦可

opencv基本資料結構

iplimage 首先介紹重要的成員變數 width和height表示了的尺寸。其次是depth和nchannels,depth是指畫素顏色的取值範圍,nchnannels為影象的通道,可以取1,2,3,4 origin變數定義了影象的原點,有兩個取值,分別是ipl origin bl和ipl or...

OpenCV中的基本資料結構

最近在靜下心來梳理乙份視覺 把當初直接用上但是卻沒仔細咀嚼的東西拿出來整理一下。其實靜下心來做些事情真的不容易,時常被各種雜事打斷,anyway,想辦法保持短時間專注還是必要的。point資料結構表示二維影象中的點,由影象座標x和y組成。用法 point mypoint mypoint.x 100 ...

opencv 基本資料結構的資料儲存

在opencv的專案中遇到需要儲存中間資料的時候,可以用到filestorage類對資料進行讀寫。filestorage類會將資料以xml的形式儲存在檔案中,方便下次載入使用。在我的專案中,需要對特徵點和特徵點描述符進行儲存,使用它十分方便。下面是它的使用方法mat mat mat eye size...