OPENCV 2 資料結構

2021-08-10 23:05:57 字數 2183 閱讀 4849

opencv的資料結構定義於types_c.h中,下面對其一一介紹:

a. cvrect 矩形類

typedef

struct cvrect

cvrect;

x和y表示矩形的起始座標,而width和height則表示矩形的寬和高;其建構函式為:

cv_inline  cvrect  cvrect( int x, int y, int width, int height )

此外還有iplroi也類似於矩形類;

b. cvpoint 點類

typedef

struct cvpoint

cvpoint;

cv_inline  cvpoint  cvpoint( int x, int y )

此外還有表示浮點型的點:cvpoint2d32f、cvpoint2d64f;三維點cvpoint3d32f、cvpoint2d64f;

c. 尺寸類

typedef

struct cvsize

cvsize;

同樣有建構函式 cv_inline cvsize cvsize( int width, int height ),和更高精度的尺寸類cvsize2d32f;

d. 顏色類

typedef

struct cvscalar

cvscalar;

表示影象的b(blue)、g(green)、r(red)、alpha - 影象的透明度;建構函式有:

cv_inline  cvscalar  cvscalar( double val0, double val1 cv_default(0),

double val2 cv_default(0), double val3 cv_default(0))

cv_inline cvscalar cvrealscalar( double val0 )

cv_inline cvscalar cvscalarall( double val0123 )

e. 矩陣類

typedef struct cvmat

data; // 資料位址

#ifdef __cplusplus

union

;union

;#else

int rows;

int cols;

#endif

}cvmat;

1.大多數情況下,step等於 width * 單個資料的長度,但是也存在例外情況

2.ptr、s、i、fl和db表示的是同乙個位址。cvmat這樣進行定義的目的是為了更好的運算元據;

3.mat a = b;這時只進行淺拷貝,如果需要用到深拷貝,則需要使用cvclonemat

int main()  

; cvmat ma=cvmat(3, 4, cv_64fc1, aa);

cvmat mb = ma;

cvmat * mc = cvclonemat(&ma);

printf("address of aa = %d\naddress of ma = %d\naddress of mb = %d\naddress of mc = %d\n",

(int)aa, (int)ma.data.ptr, (int)mb.data.ptr, (int)mc->data.ptr);

cvreleasemat(&mc);

}

得到的結果是:

address of aa = 1964272

address of ma = 1964272

address of mb = 1964272

address of mc = 3658064

f. iplimage影象類

typedef

struct _iplimage

iplimage;

1.roi是影象的感興趣的區域,當進行顯示時,只會顯示感興越區域;

2.cvcopy會拷貝影象的感興趣區域,而cvcloneimage則會拷貝所有的值;

openCV2 角點檢測

文章目錄 一 harris角點檢測基本理論 二 opencv 實現 三 改進的harris角點檢測 四 fast角點檢測 五 參考文獻 六 附錄 資料和原始碼 一 harris角點檢測基本理論 要講清楚東西太多,附錄提供文件詳細說明 1.1 簡略表達 角點 最直觀的印象就是在水平 豎直兩個方向上變化...

opencv2中尋找輪廓

最近想嘗試用opencv做專案,發現需要考慮的細節很多,用商業庫用習慣了,有點不適應,慢慢來吧。上網查了查用opencv做連通域運算,發現都是先尋找輪廓,那就先來學習下輪廓。opencv中尋找輪廓的c 函式是 void findcontours inputoutputarray image outp...

Opencv2與opencv1的區別

一 opencv2與opencv1的區別 opencv1.0 版本於2006年面世,主要基於c語言。2009年發布opencv2,主要基於c 此時opencv庫被劃分成多個模組,這些模組被編譯成庫檔案後,位於lib資料夾中。主要有以下模組 版本1的結構見我的這篇blog opencv core 模組...