0

私はいくつかのopenCVドキュメントとヘッダーを研究しており、ここで何が起こっているのかを完全に理解しようとしています.

core_c.h

CVAPI(CvMat*) cvInitMatHeader( CvMat* mat, int rows, int cols,
                          int type, void* data CV_DEFAULT(NULL),
                          int step CV_DEFAULT(CV_AUTOSTEP) );

まず、宣言ではcvInitMatHeader

void* data CV_DEFAULT(NULL),
int step CV_DEFAULT(CV_AUTOSTEP) 

この種の入力変数はどういう意味ですか? これと、通常使用する次のような宣言との違いは何ですか?

void* data 
int step 

次に、実際に cvInitMatHeader を使用できるチュートリアルを読みました

double a[] = { 1,  2,  3,  4,
           5,  6,  7,  8,
           9, 10, 11, 12 };
CvMat Ma;
cvInitMatHeader(&Ma, 3, 4, CV_64FC1, a);

入力変数の数がヘッダーと一致せず、他の関数のオーバーロードが見つかりません。

なぜこれが機能するのですか?

4

1 に答える 1

1

CV_DEFAULT(x)与えられたコードから、これは に展開されるマクロであると推測でき= xます。それらに慣れていない場合は、デフォルトの引数を参照してください。

于 2012-09-23T13:01:29.440 に答える