C++ 函数重新映射的参数错误

C++ 函数重新映射的参数错误,c++,function,opencv,arguments,signature,C++,Function,Opencv,Arguments,Signature,我有以下opencv代码: InputArray fish =InputArray(ra); InputArray base = InputArray(ra); Mat warp(Mat input) { if (!f) { fish = genfish(input); f = true } if (!b) { base = bladArray; b = true } Mat ret;

我有以下opencv代码:

InputArray fish =InputArray(ra);
InputArray base =  InputArray(ra);

 Mat warp(Mat input) {
    if (!f) {
        fish = genfish(input);
        f = true
    }
    if (!b) {
        base = bladArray;
        b = true
    }
    Mat ret;
    InputArray i = InputArray(input);
    OutputArray p;

    remap(i, p, fish, bladArray, 0, BORDER_CONSTANT, Scalar());
}
这段代码背后的想法是在图像上有效地应用鱼眼校正(这就是过滤器被缓冲的原因)。问题是,很明显,我将错误的参数传递给了remap函数。根据合同(第273页),我们有以下签名:

void remap ( InputArray src , OutputArray dst , InputArray map1, InputArray map2 , int interpolation , int borderMode =BORDER_CONSTANT, const Scalar& borderValue =Scalar() )
现在


这一切似乎都符合签名,但它一直告诉我我的签名是错误的。我做错了什么

对args使用cv::Mat,而不是InputArray或OutputArraytried,但两者都不起作用,或者您的意思是切换所有参数?显然。这就是你为什么这么做的原因。尽管如此,还是返回到cv::Mat并重试;垫输出;重新映射(输入、输出、fish、bladArray、0);谢谢你也应该把鱼和布拉达雷放在垫子里
InputArray src = i 
OutputArray dst= p
InputArray map1=fish
InputArray map2=bladarray
int interpolation=0
int bordermode=BORDER_CONSTANT
Scaler borderValue=scaler();