整数型で表現される2次元座標上の点(通常は,0が原点).
typedef struct CvPoint
{
int x;
int y;
}
CvPoint;
- x¶
- x 座標
- y¶
- y 座標
/* コンストラクタ */
inline CvPoint cvPoint( int x, int y );
/* CvPoint2D32f からの変換 */
inline CvPoint cvPointFrom32f( CvPoint2D32f point );
浮動小数点型で表現される2次元座標上の点(通常は,0が原点).
typedef struct CvPoint2D32f
{
float x;
float y;
}
CvPoint2D32f;
- x
- x 座標
- y
- y 座標
/* コンストラクタ */
inline CvPoint2D32f cvPoint2D32f( double x, double y );
/* CvPoint からの変換 */
inline CvPoint2D32f cvPointTo32f( CvPoint point );
浮動小数点型で表現される3次元座標上の点(通常は,0が原点).
typedef struct CvPoint3D32f
{
float x;
float y;
float z;
}
CvPoint3D32f;
- x
- x 座標
- y
- y 座標
- z¶
- z 座標
/* コンストラクタ */
inline CvPoint3D32f cvPoint3D32f( double x, double y, double z );
倍精度浮動小数点型で表現される2次元座標上の点(通常は,0が原点).
typedef struct CvPoint2D64f
{
double x;
double y;
}
CvPoint2D64f;
- x
- x-coordinate
- y
- y-coordinate
/* コンストラクタ */
inline CvPoint2D64f cvPoint2D64f( double x, double y );
/* CvPoint からの変換 */
inline CvPoint2D64f cvPointTo64f( CvPoint point );
倍精度浮動小数点型で表現される3次元座標上の点(通常は,0が原点).
typedef struct CvPoint3D64f
{
double x;
double y;
double z;
}
CvPoint3D64f;
- x
- x 座標
- y
- y 座標
- z
- z 座標
/* コンストラクタ */
inline CvPoint3D64f cvPoint3D64f( double x, double y, double z );
ピクセル精度で表現された矩形のサイズ.
typedef struct CvSize
{
int width;
int height;
}
CvSize;
- width¶
- 矩形の幅
- height¶
- 矩形の高さ
/* コンストラクタ */
inline CvSize cvSize( int width, int height );
サブピクセル精度で表現された矩形のサイズ.
typedef struct CvSize2D32f
{
float width;
float height;
}
CvSize2D32f;
- width
- 矩形の幅
- height
- 矩形の高さ
/* コンストラクタ */
inline CvSize2D32f cvSize2D32f( double width, double height );
矩形のオフセット(通常,左上の角)座標,およびサイズ.
typedef struct CvRect
{
int x;
int y;
int width;
int height;
}
CvRect;
- x
- 左上の x 座標
- y
- 左上の y 座標(Windowsビットマップの場合は,左下)
- width
- 矩形の幅
- height
- 矩形の高さ
/* コンストラクタ */
inline CvRect cvRect( int x, int y, int width, int height );
double型の値を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 );
反復アルゴリズムのための停止基準.
#define CV_TERMCRIT_ITER 1
#define CV_TERMCRIT_NUMBER CV_TERMCRIT_ITER
#define CV_TERMCRIT_EPS 2
typedef struct CvTermCriteria
{
int type;
int max_iter;
double epsilon;
}
CvTermCriteria;
- type¶
- CV_TERMCRIT_ITER と CV_TERMCRIT_EPS の組み合わせ
- max_iter¶
- 反復数の最大値
- epsilon¶
- 要求精度
/* コンストラクタ */
inline CvTermCriteria cvTermCriteria( int type, int max_iter, double epsilon );
/* 与えられた cvTermCriteria をチェックし,
type を CV_TERMCRIT_ITER+CV_TERMCRIT_EPS に変更し,
max_iter と eprilon の両方を有効にします.*/
CvTermCriteria cvCheckTermCriteria( CvTermCriteria criteria,
double default_eps,
int default_max_iters );
マルチチャンネル行列.
typedef struct CvMat
{
int type;
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;
- type
- 行列の要素の型とフラグを含む,CvMat のシグネチャ(CV _ MAT _ MAGIC _ VAL)
- step¶
- バイト単位で表される行の長さ
- refcount¶
- 内部的に利用されるデータ参照カウンタ
- data¶
- 実際の行列データへのポインタ
- rows¶
- 行数
- cols¶
- 列数
行列は,各列ごとに保存されます.全ての列は,4バイト境界にアラインメントが調整されます.
多次元,マルチチャンネルの密な配列.
typedef struct CvMatND
{
int type;
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;
- type
- 行列要素の型とフラグを含む,CvMatND のシグネチャ(CV _ MATND _ MAGIC _ VAL)
- dims¶
- 配列の次元数
- refcount
- 内部的に利用されるデータ参照カウンタ
- data
- 実際の行列データへのポインタ
- dim¶
- 各次元における(要素数,要素間のバイト数)の組
多次元,マルチチャンネルの疎な配列.
typedef struct CvSparseMat
{
int type;
int dims;
int* refcount;
struct CvSet* heap;
void** hashtable;
int hashsize;
int total;
int valoffset;
int idxoffset;
int size[CV_MAX_DIM];
} CvSparseMat;
- type
- 行列の要素の型とフラグを含む,CvSparseMat のシグネチャ(CV _ SPARSE _ MAT _ MAGIC _ VAL)
- dims
- 次元数
- refcount
- 参照カウンタ.利用されません
- heap¶
- ハッシュテーブルのノードの保存領域
- hashtable¶
- ハッシュテーブル.各エントリはノードのリストです
- hashsize¶
- ハッシュテーブルのサイズ
- total¶
- 疎な配列のノード総数
- valoffset¶
- 配列ノードの値のオフセット.バイト単位
- idxoffset¶
- 配列ノードのインデックスのオフセット.バイト単位
- size¶
- 各次元のサイズを表す配列
IPL 画像ヘッダ.
typedef struct _IplImage
{
int nSize;
int ID;
int nChannels;
int alphaChannel;
int depth;
char colorModel[4];
char channelSeq[4];
int dataOrder;
int origin;
int align;
int width;
int height;
struct _IplROI *roi;
struct _IplImage *maskROI;
void *imageId;
struct _IplTileInfo *tileInfo;
int imageSize;
char *imageData;
int widthStep;
int BorderMode[4];
int BorderConst[4];
char *imageDataOrigin;
}
IplImage;
- nSize¶
- sizeof(IplImage)
- ID¶
- バージョン,常に 0
- nChannels¶
- チャンネル数.OpenCV のほとんどの関数が,1-4 チャンネルをサポートします
- alphaChannel¶
- OpenCV では無視されます
- depth¶
ピクセル毎のビット数(ビット深度,色深度)+オプションの符号ビット( IPL_DEPTH_SIGN ).サポートされるビット深度は:
- IPL_DEPTH_8U¶
- 8ビット符号なし整数
- IPL_DEPTH_8S¶
- 8ビット符号あり整数
- IPL_DEPTH_16U¶
- 16ビット符号なし整数
- IPL_DEPTH_16S¶
- 16ビット符号あり整数
- IPL_DEPTH_32S¶
- 32ビット符号あり整数
- IPL_DEPTH_32F¶
- 単精度浮動小数点数
- IPL_DEPTH_64F¶
- 倍精度浮動小数点数
- colorModel¶
- OpenCV では無視されます.OpenCVの関数 CvtColor は,パラメータとして変換元と変換後の色空間を利用します
- channelSeq¶
- OpenCV では無視されます
- dataOrder¶
- 0 = IPL_DATA_ORDER_PIXEL - インタリーブカラーチャンネル,1 - 分離カラーチャンネル. CreateImage が作成できるのは,インタリーブチャンネルの画像のみです.例えば,一般的なカラー画像のレイアウトは, のようになります
- origin¶
- 0 - 左上原点,1 - 左下原点(Windows ビットマップ形式)
- align¶
- 画像の行のアラインメント(4 あるいは 8).OpenCV ではこれを無視して,代わりに widthStep を使用します
- width
- ピクセル単位で表された画像の幅
- height
- ピクセル単位で表された画像の高さ
- roi¶
- 注目領域(ROI).NULL でないならば,この領域が処理の対象となります
- maskROI¶
- OpenCVでは,必ず NULL
- imageId¶
- OpenCVでは,必ず NULL
- imageId
- OpenCVでは,必ず NULL
- imageSize¶
- バイト単位で表された画像のデータサイズ.インタリーブデータの場合,これは, と等しくなります
- imageData¶
- アラインメントが調整された画像データへのポインタ
- widthStep¶
- アラインメントが調整された画像の行のサイズ.バイト単位で表されます
- BorderMode¶
- 画像境界モード.OpenCVでは無視されます
- BorderConst¶
- 画像境界値.OpenCVでは無視されます
- imageDataOrigin¶
- オリジナル画像データへのポインタ(アラインメントが調整されているとは限りません).画像を解放するために利用されます
IplImage 構造体は元々,Intel Image Processing Library(IPL) 固有の形式として利用されていました.OpenCVでは,上述のパラメータリストにあるように, IplImage フォーマットの一部のみをサポートします.
この制限に加えて,OpenCV と IPL とでは ROI の扱いが異なります.OpenCV ではすべての入出力画像のサイズ,またはその ROI サイズが正確に一致する必要があります.一方 IPL では,重複する領域が処理の対象となります.つまり画像のサイズ,または ROI のサイズがバラバラでも構いません.