我写了一个带有可变参数列表的函数
void cvShowMatImages( char* title, int nArgs, ...) // Mat Images
其中要传递的参数是 openCV 图像。对于 2 种图像格式 IplImage 和 Mat,我实际上有 2 个不同的功能,上面提到的和第二个
void cvShowIplImages( char* title, int nArgs, ...) // Ipl Images
但我不能混合两种类型的图像。如果我能够确定传递的参数类型,我可以解决我的问题,但我不知道该怎么做。这就是我阅读论点的方式:
// 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=。有没有办法解决这个问题?