可変引数リストを持つ関数を作成しました
void cvShowMatImages( char* title, int nArgs, ...) // Mat Images
渡す引数は openCV イメージです。私は実際に2つの画像フォーマットIplImageとMatに対して2つの異なる関数を持っています。
void cvShowIplImages( char* title, int nArgs, ...) // Ipl Images
しかし、2 種類の画像を混在させることはできません。渡された引数のタイプを判別できれば問題を解決できますが、その方法がわかりません。これは私が議論を読む方法です:
// Get the images passed as arguments
va_list args;
// Initialize the variable argument list
va_start( args, nArgs );
// Loop on each image
for ( int num = 0; num < nArgs; num++ )
{
// Get the image to be copied from the argument list
srcImg = va_arg( args, Mat );
...
IplImage の場合:
srcImg = va_arg( args, IplImage* );
どちらの場合も、srcImg は次のように宣言されます。
Mat srcImg
IplImage のオーバーロードされた operator= があるためです。この問題を解決する方法はありますか?