opencv包含的模組
cv – 核心函式庫
cvaux – 輔助函式庫
cxcore – 資料結構與線性代數庫
highgui – gui函式庫
ml – 機器學習函式庫
函式名:
cvactiontargetmod(...)
action = 核心功能(core functionality) (e.g. set, create)
target = 目標影象區域(target image area) (e.g. contour, polygon)
mod
= (可選的)調整語(optional modifiers) (e.g. argument type)
矩陣資料型別:
cv_(s|u|f)c
s = 符號整型
u = 無符號整型
f = 浮點型
e.g.: cv_8uc1 是指乙個8位無符號整型單通道矩陣,
cv_32fc2是指乙個32位浮點型雙通道矩陣.
影象資料型別:
ipl_depth_(s|u|f)
e.g.: ipl_depth_8u 影象畫素資料是8位無符號整型.
ipl_depth_32f影象畫素資料是32位浮點型.
標頭檔案:
#include
#include
#include
#include
#include
// 一般不需要,cv.h 內已包含該標頭檔案
opencv影象資料結構
(1) ipl 影象:
iplimage
|-- int nchannels;
// 顏色通道數目 (1,2,3,4)
|-- int depth;
// 畫素的位深:
| //
ipl_depth_8u, ipl_depth_8s,
| //
ipl_depth_16u,ipl_depth_16s,
| //
ipl_depth_32s,ipl_depth_32f,
| //
ipl_depth_64f
|-- int width;
// 影象寬度(畫素為單位)
|-- int height;
// 影象高度
|-- char* imagedata;
// 影象資料指標
(即指向儲存影象畫素值陣列的指標,內容是這個陣列的首位址)
| // 注意彩色影象按bgr順序儲存資料
|-- int dataorder;
// 0 - 將畫素點不同通道的值交錯排在一起,形成單一畫素平面
| // 1 - 把所有畫素同通道值排在一起,形成若干個通道平面,再把平面排列起來
| // cvcreateimage 只能建立畫素交錯排列式的影象
|-- int origin;
// 0 – 畫素原點為左上角,
| // 1 – 畫素原點為左下角 (windows bitmaps style)
|-- int widthstep;
// 相鄰行的同列點之間的位元組數
(即影象每行所佔的位元組數,注意與每行所佔的畫素個數 width 區分)
|-- int imagesize;
// 影象的大小(位元組為單位) = height*widthstep
|-- struct _iplroi *roi;// 影象的感興趣區域(roi). roi非空時對影象的
| // 處理僅限於roi區域.
|-- char *imagedataorigin; // 影象資料未對齊時的資料原點指標
| // (需要正確地重新分配影象記憶體 )
| // (needed for correct image deallocation)
|-- int align;
// 影象資料的行對齊: 4 or 8 byte alignment
| // opencv 中無此項,採用widthstep代替
|-- char colormodel[4]; // 顏色模型 – opencv中忽略此項
矩陣與向量
(1) 矩陣:
cvmat
// 2d 矩陣
|-- int
type;
// 元素型別 (uchar,short,int,float,double) 與標誌
|-- int
step;
// 整行長度位元組數
|-- int
rows, cols;
// 行、列數
|-- int
height, width; // 矩陣高度、寬度,與rows、cols對應
|-- union data;
|-- uchar* ptr;
// data pointer for an unsigned char matrix
|-- short* s;
// data pointer for a short matrix
|-- int*
i; // data pointer for an integer matrix
|-- float* fl;
// data pointer for a float matrix
|-- double* db;
// data pointer for a double matrix
cvma***
// n-維矩陣
|-- int
type;
// 元素型別 (uchar,short,int,float,double) 與標誌
|-- int
dims;
// 矩陣維數
|-- union data;
| |-- uchar* ptr;
// data pointer for an unsigned char 矩陣
| |-- short* s;
// data pointer for a short matrix
| |-- int*
i; // data pointer for an integer matrix
| |-- float* fl;
// data pointer for a float matrix
| |-- double* db;
// data pointer for a double matrix
| |-- struct dim;
// 各維資訊
|-- size;
// 元素數目
|-- step;
// 元素間距(位元組為單位)
cvsparsemat // n-維稀疏矩陣
(2) 一般矩陣:
cvarr*
// 僅作為函式定義的引數使用,
// 表明函式可以接受不同型別的矩陣作為引數,
// 例如:iplimage*, cvmat* 甚至是 cvseq*.
// 矩陣的型別通過矩陣頭的前4個位元組資訊來確定
(3) 標量:
cvscalar
|-- double val[4]; //4d 向量
初始化函式:
cvscalar s = cvscalar(double val0, double val1=0, double val2=0, double val3=0);
// example:
cvscalar s = cvscalar(20.0);
s.val[0]=20.0;
注意該初始化函式的函式名與對應的結構體名稱幾乎同名,差別僅在於函式名第乙個字母是小寫的,而結構體名第乙個字母是大寫的。它並不是乙個 c++ 建構函式。(譯註:類似的還有 cvmat 與 cvmat、cvpoint 與 cvpoint 等等)
3、其它結構型別
(1) 點:
cvpoint
p = cvpoint(int x, int y);
cvpoint2d32f p = cvpoint2d32f(float x, float y);
cvpoint3d32f p = cvpoint3d32f(float x, float y, float z);
p.x=5.0;
p.y=5.0;
(2) 矩形框大小(以畫素為精度):
cvsize
r = cvsize(int width, int height);
cvsize2d32f r = cvsize2d32f(float width, float height);
(3) 矩形框的偏置和大小:
cvrect
r = cvrect(int x, int y, int width, int height);
opencv基本資料結構
iplimage 首先介紹重要的成員變數 width和height表示了的尺寸。其次是depth和nchannels,depth是指畫素顏色的取值範圍,nchnannels為影象的通道,可以取1,2,3,4 origin變數定義了影象的原點,有兩個取值,分別是ipl origin bl和ipl or...
opencv的基本資料結構
vec scalar point size rect rotatedrectvec類 1.1 基本概念 vec是乙個模板類,主要用於儲存數值向量。1.2 用法 1 可用它來定義任意型別的向量 vecmyvector 定義乙個存放8個double型變數的向量 2 使用 訪問vec向量成員 myvect...
OpenCV基本資料結構與示例
基本資料型別包括 vec scalar point size rect1 vec向量 vec是乙個模板類,主要用於儲存數值向量。typedef vec2 vec2b typedef vec3 vec3b typedef vec4 vec4b typedef vec short,2 vec2s typ...