Ala*_*ler 5 c++ opencv variadic-functions
我编写了一个带有变量参数列表的函数
void cvShowMatImages( char* title, int nArgs, ...) // Mat Images
Run Code Online (Sandbox Code Playgroud)
传递的参数是openCV图像.我实际上有两种不同的功能,用于2种图像格式IplImage和Mat,上面提到的和第二种
void cvShowIplImages( char* title, int nArgs, ...) // Ipl Images
Run Code Online (Sandbox Code Playgroud)
但我无法混合两种类型的图像.如果我能够确定传递的参数类型,我可以解决我的问题,但我不知道该怎么做.这就是我读这个论点的方式:
// 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 );
...
Run Code Online (Sandbox Code Playgroud)
对于IplImage:
srcImg = va_arg( args, IplImage* );
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,srcImg都声明为
Mat srcImg
Run Code Online (Sandbox Code Playgroud)
因为有一个重载的operator = for IplImage.有没有办法解决这个问题?
我宁愿考虑传递元组或数组或向量。
与带有 N 的模板一样std::array,也可以使您的函数成为带有 N 的模板,并以通用方式实现。如果您的编译器适合的话,可变参数模板也是可行的。
...是我们试图摆脱的东西。传递任何非 POD 的内容是未定义的行为,并且不可能进行类型检查。是什么让它太容易出错。对于您的情况来说,这也不是很有帮助。
| 归档时间: |
|
| 查看次数: |
1126 次 |
| 最近记录: |