1. 程式人生 > >[OpenCV學習筆記1][OpenCV基本數據類型]

[OpenCV學習筆記1][OpenCV基本數據類型]

sin clas 版本 節點數 節點 pixel all 使用 mcr

CvPoint
基於二維整形坐標軸的點
typedef struct CvPoint
{
int x; /* X 坐標, 通常以 0 為基點 */
int y; /* y 坐標,通常以 0 為基點 */
}
CvPoint;
/* 構造函數 */
inline CvPoint cvPoint( int x, int y );
/* 從 CvPoint2D32f 類型轉換得來 */
inline CvPoint cvPointFrom32f( CvPoint2D32f point );

CvPoint
基於二維整形坐標軸的點
typedef struct CvPoint
{
int x; /* X 坐標, 通常以 0 為基點 */
int y; /* y 坐標,通常以 0 為基點 */
}
CvPoint;
/* 構造函數 */
inline CvPoint cvPoint( int x, int y );
/* 從 CvPoint2D32f 類型轉換得來 */
inline CvPoint cvPointFrom32f( CvPoint2D32f point );

/* 構造函數 */
inline CvPoint2D32f cvPoint2D32f( double x, double y );
/* 從 CvPoint 轉換來 */
inline CvPoint2D32f cvPointTo32f( CvPoint point );


CvPoint3D32f
三維浮點坐標上的點
typedef struct CvPoint3D32f
{
float x; /* x-坐標,通常基於 0 */
float y; /* y-坐標, 通常基於 0*/
float z; /* z-坐標,通常基於 0 */
}
CvPoint3D32f;
/* 構造函數 */
inline CvPoint3D32f cvPoint3D32f( double x, double y, double z );

CvPoint2D64f
2D point with double precision floating-point coordinates
typedef struct CvPoint2D64f
{
double x; /* x-坐標,通常基於 0 */
double y; /* y-坐標,通常基於 0 */
}
CvPoint2D64f;
/* 構造函數 */
inline CvPoint2D64f cvPoint2D64f( double x, double y );
/* 從 CvPoint 轉換得來 */
inline CvPoint2D64f cvPointTo64f( CvPoint point );
CvPoint3D64f
3D point with double precision floating-point coordinates
typedef struct CvPoint3D64f
{
double x; /* x-坐標,通常基於 0 */
double y; /* y-坐標,通常基於 0 */
double z; /* z-坐標,通常基於 0 */

}
CvPoint3D64f;
/* 構造函數 */
inline CvPoint3D64f cvPoint3D64f( double x, double y, double z );
}
CvPoint3D64f;
/* 構造函數 */
inline CvPoint3D64f cvPoint3D64f( double x, double y, double z );
CvSize
矩形框大小,以像素為精度
typedef struct CvSize
{
int width; /* 矩形寬 */
int height; /* 矩形高 */
}
CvSize;
/* 構造函數 */
inline CvSize cvSize( int width, int height );
CvSize2D32f
以低像素精度標量矩形框大小
typedef struct CvSize2D32f
{
float width; /* 矩形寬 */
float height; /* 矩形高 */
}
CvSize2D32f;
/* 構造函數*/
inline CvSize2D32f cvSize2D32f( double width, double height );
CvRect
矩形框的偏移和大小
typedef struct CvRect
{
int x; /* 方形的最左角的 x-坐標 */
int y; /* 方形的最上或者最下角的 y-坐標 */
int width; /* 寬 */
int height; /* 高 */
}
CvRect;
/* 構造函數*/
inline CvRect cvRect( int x, int y, int width, int height );
CvScalar
可存放在 1-2-3-4-TUPLE 類型的捆綁數據的容器
typedef struct CvScalar
{
double val[4]
}
CvScalar;
/* 構造函數:用 val0 初始化 val[0]val1 初始化 val[1]等等*/
inline CvScalar cvScalar( double val0, double val1=0,
double val2=0, double val3=0 );
/* 構造函數:用 val0123 初始化 val0123 */
inline CvScalar cvScalarAll( double val0123 );
/* 構造函數:用 val0 初始化 val[0],val[1]…val[3]0 初始化 */
inline CvScalar cvRealScalar( double val0 );
CvTermCriteria
叠代算法的終止標準
#define CV_TERMCRIT_ITER 1
#define CV_TERMCRIT_NUMBER CV_TERMCRIT_ITER
#define CV_TERMCRIT_EPS 2
typedef struct CvTermCriteria
{
int type; /* CV_TERMCRIT_ITER 和 CV_TERMCRIT_EPS 的聯合 */
int max_iter; /* 叠代的最大數 */
double epsilon; /* 結果的精確性 */
}
CvTermCriteria;
/* 構造函數 */
inline CvTermCriteria cvTermCriteria( int type, int max_iter, double
epsilon );
/* 檢查終止標準並且轉換使 type=CV_TERMCRIT_ITER+CV_TERMCRIT_EPS,並且滿足
max_iter 和 epsilon 限制條件 */
CvTermCriteria cvCheckTermCriteria( CvTermCriteria criteria,
double default_eps,
int default_max_iters );
CvMat
多通道矩陣
typedef struct CvMat
{
int type; /* CvMat 標識 (CV_MAT_MAGIC_VAL), 元素類型和標記 */
int step; /* 以字節為單位的行數據長度*/
int* refcount; /* 數據參考計數 */
union
{
uchar* ptr;
short* s;
int* i;
float* fl;
double* db;
} data; /* data 指針 */
#ifdef __cplusplus
union
{
int rows;
int height;
};
union
{
int cols;
int width;
};
#else
int rows; /* 行數 */
int cols; /* 列數*/
#endif
} CvMat;
CvMatND
多維、多通道密集數組
typedef struct CvMatND
{
int type; /* CvMatND 標識(CV_MATND_MAGIC_VAL), 元素類型和標號*/
int dims; /* 數組維數 */
int* refcount; /* 數據參考計數 */
union
{
uchar* ptr;
short* s;
int* i;
float* fl;
double* db;
} data; /* data 指針*/
/* 每維的數據結構 (元素號,以字節為單位的元素之間的距離)是配套定義的
*/
struct
{
int size;
int step;
}
dim[CV_MAX_DIM];
} CvMatND;
CvSparseMat
多維、多通道稀疏數組
typedef struct CvSparseMat
{
int type; /* CvSparseMat 標識 (CV_SPARSE_MAT_MAGIC_VAL), 元素類型和
標號 */
int dims; /* 維數 */
int* refcount; /* 參考數量 - 未用 */
struct CvSet* heap; /* HASH 表節點池 */
void** hashtable; /* HASH 表:每個入口有一個節點列表,有相同的 "以 HASH
大小為模板的 HASH 值" */
int hashsize; /* HASH 表大小 */
int total; /* 稀疏數組的節點數 */
int valoffset; /* 數組節點值在字節中的偏移 */
int idxoffset; /* 數組節點索引在字節中的偏移 */
int size[CV_MAX_DIM]; /*維大小 */
} CvSparseMat;
IplImage
IPL 圖像頭
typedef struct _IplImage
{
int nSize; /* IplImage 大小 */
int ID; /* 版本 (=0)*/
int nChannels; /* 大多數 OPENCV 函數支持 1,2,3 或 4 個通道 */
int alphaChannel; /* 被 OpenCV 忽略 */
int depth; /* 像素的位深度: IPL_DEPTH_8U, IPL_DEPTH_8S,
IPL_DEPTH_16U,
IPL_DEPTH_16S, IPL_DEPTH_32S, IPL_DEPTH_32F
and IPL_DEPTH_64F 可支持 */
char colorModel[4]; /* 被 OpenCV 忽略 */
char channelSeq[4]; /* 同上 */
int dataOrder; /* 0 - 交叉存取顏色通道, 1 - 分開的顏色通道.
只有 cvCreateImage 可以創建交叉存取圖像 */
int origin; /* 0 - 頂—左結構,
1 - 底—左結構 (Windows bitmaps 風格) */
int align; /* 圖像行排列 (4 or 8). OpenCV 忽略它,使用
widthStep 代替 */
int width; /* 圖像寬像素數 */
int height; /* 圖像高像素數*/
struct _IplROI *roi;/* 圖像感興趣區域. 當該值非空只對該區域進行處理
*/
struct _IplImage *maskROI; /* 在 OpenCV 中必須置 NULL */
void *imageId; /* 同上*/
struct _IplTileInfo *tileInfo; /*同上*/
int imageSize; /* 圖像數據大小(在交叉存取格式下
imageSize=image->height*image->widthStep),單位字節*/
char *imageData; /* 指向排列的圖像數據 */
int widthStep; /* 排列的圖像行大小,以字節為單位 */
int BorderMode[4]; /* 邊際結束模式, 被 OpenCV 忽略 */
int BorderConst[4]; /* 同上 */
char *imageDataOrigin; /* 指針指向一個不同的圖像數據結構(不是必須排
列的),是為了糾正圖像內存分配準備的 */
}
IplImage;
IplImage 結構來自於 Intel Image Processing Library(是其本身所具有的). OpenCV
只支持其中的一個子集:
? alpha 通道在 OpenCV 中被忽略.
? colorModel channelSeq OpenCV 忽略. OpenCV 顏色轉換的 唯一個函數
cvCvtColor 把原圖像的顏色空間的目標圖像的顏色空間作為一個參數.
? 數據順序 必須是 IPL_DATA_ORDER_PIXEL (顏色通道是交叉存取), 然面平面圖像的被選
擇通道可以被處理,就像 COI(感興趣的通道)被設置過一樣.
? widthStep 被用於去接近圖像行序列,排列是被 OpenCV 忽略的.
? 不支持 maskROI . 處理 MASK 的函數把他當作一個分離的參數. MASK OpenCV 裏是
8-bit, 然而在 IPL 他是 1-bit.
? 名字信息不支持.
? 邊際模式和邊際常量是不支持的. 每個 OpenCV 函數處理像素的鄰近的像素,通常使
用單一的固定代碼邊際模式.
除了上述限制, OpenCV 處理 ROI 有不同的要求.要求原圖像和目標圖像的尺寸或 ROI 的尺寸必須
(根據不同的作操,例如 cvPyrDown 目標圖像的寬(高)必須等於原圖像的寬(高)除 2 ±1)精確
匹配,IPL 處理交叉區域,如圖像的大小或 ROI 大小可能是完全獨立的。
CvArr
不確定數組
typedef void CvArr;
CvArr* 僅僅是被用於作函數的參數,用於指示函數接收的數組類型可以不止一個,如
IplImage*, CvMat* 甚至 CvSeq*. 最終的數組類型是在運行時通過分析數組頭的前 4
個字節判斷。


[OpenCV學習筆記1][OpenCV基本數據類型]