CXCORE リファレンス マニュアル
最終変更者: 怡土順一, 最終変更リビジョン: 448, 最終変更日時: 2008-12-24 00:28:23 +0900 (水, 24 12月 2008)
- 基本構造体(Basic Structures)
- 配列操作(Operations on Arrays)
- 動的構造体(Dynamic Structures)
- 描画関数(Drawing Functions)
- データ永続性と実行時型情報(Data Persistence and RTTI)
- その他の関数(Miscellaneous Functions)
- エラーハンドリングとシステム関数(Error Handling and System Functions)
基本構造体(Basic Structures)
CvPoint
整数座標系による2次元の点
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 );
CvPoint2D32f
浮動小数点型(単精度)座標系による2次元の点
typedef struct CvPoint2D32f { float x; /* x 座標.通常は0が原点 */ float y; /* y 座標.通常は0が原点 */ } CvPoint2D32f; /* コンストラクタ */ inline CvPoint2D32f cvPoint2D32f( double x, double y ); /* CvPoint からの変換 */ inline CvPoint2D32f cvPointTo32f( CvPoint point );
CvPoint3D32f
浮動小数点型(単精度)座標系による3次元の点
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
浮動小数点型(倍精度)座標系による2次元の点
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
浮動小数点型(倍精度)座標系による3次元の点
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 );
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
4個までの数を納めるコンテナ
typedef struct CvScalar { double val[4]; } CvScalar; /* コンストラクタ:val[0] を val0 で初期化.val[1] を val1 で初期化.… */ inline CvScalar cvScalar( double val0, double val1=0, double val2=0, double val3=0 ); /* コンストラクタ:val[0]...val[3] を val0123 で初期化 */ inline CvScalar cvScalarAll( double val0123 ); /* コンストラクタ:val[0] を val0 で初期化.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とeprilon の両方が有効になるように変換する */
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; /* データポインタ */ #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; /* データポインタ */ /* 各次元での(要素数,要素間のバイト距離)の組 */ 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; /* ハッシュテーブルノードの保存領域(プール) */ void** hashtable; /* ハッシュテーブル:各エントリは,同じ「hashvalue の hashsize を法とする剰余」 をノードのリストとして持つ */ int hashsize; /* ハッシュテーブルのサイズ */ int total; /* 粗な配列ノードの総数 */ int valoffset; /* 配列ノードの値のオフセット(バイト単位) */ int idxoffset; /* 配列ノードのインデックスのオフセット(バイト単位) */ int size[CV_MAX_DIM]; /* 次元サイズの配列 */ } CvSparseMat;
IplImage
IPL 画像ヘッダ
typedef struct _IplImage { int nSize; /* sizeof(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, IPL_DEPTH_64F がサポートされる */ char colorModel[4]; /* OpenCV では無視される */ char channelSeq[4]; /* 同上 */ int dataOrder; /* 0 - インタリーブカラーチャンネル.1 - 分離カラーチャンネル, cvCreateImage が作成できるのは,インタリーブ画像のみ.*/ int origin; /* 0 - 左上原点, 1 - 左下原点(Windowsのビットマップ形式) */ int align; /* 画像の行のアライメント(4 あるいは 8). OpenCV はこれを無視して,代わりに widthStep を使用する. */ int width; /* 画像のピクセル幅 */ int height; /* 画像のピクセル高さ */ struct _IplROI *roi;/* 画像 ROI.これが NULL でない場合,この特定の領域が処理の対象となる */ struct _IplImage *maskROI; /* OpenCV では必ずNULL */ void *imageId; /* 同上 */ struct _IplTileInfo *tileInfo; /* 同上 */ int 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では IplImage フォーマットの一部のみをサポートしている.
- alphaChannel はOpenCVでは無視される.
- colorModel と channelSeq はOpenCV では無視される. OpenCV の色空間を変換する関数cvCvtColor は,変換元と変換先の色空間をパラメータとする.
- dataOrder は IPL_DATA_ORDER_PIXEL でなければならない(色チャンネルはインタリーブされる). しかし,COI(channel of interest)が設定されている場合,そのチャンネルが処理の対象となる.
- align はOpenCV では無視され,画像の行方向への連続的なアクセスに widthStep が利用される.
- maskROI はサポートされない.マスクを利用する関数は,それを別のパラメータとして扱う. OpenCV ではマスクも 8 ビットであるが,IPL では 1 ビットとなっている.
- tileInfo はサポートされない.
- BorderMode と BorderConst はサポートされない. OpenCV の各関数は,予め決められた一つの境界設定(多くの場合は,複製境界モード)で近傍のピクセルを処理する.
CvArr
任意の配列
typedef void CvArr;
メタ型 CvArr* は,1種類以上の配列(例えば IplImage*,CvMat*,CvSeq*など)を引数にとる関数を記述するための仮引数としてのみ利用される. 個々の配列型は,実行時にヘッダの最初の4バイトを分析することで決定される.