模板参数无法推断 - OpenCV Mat

时间:2013-10-30 03:23:13

标签: templates opencv mat

我在Mat类型的OpenCV中使用了一些变量,并调用了模板函数。但是无法推导出参数模板,因此会产生编译错误

调用函数:

Rot2Homo(rot, tmpMat, ssTo);

调用函数模板:

template <class NumType>
void Rot2Homo(cv::Mat_<cv::Vec<NumType, 1>> rot, cv::Mat_<cv::Vec<NumType, 1>> trans, cv::Mat& Homo)
{   
    Homo = cv::Mat::zeros(4,4, cv::Vec<NumType, 1>);

    rot.copyTo(Homo(Range(0,3), Range(0,3)));
    trans.copyTo(Homo(Range(0,3), Range(3,4)));
    Homo.at<cv::Vec<NumType, 1>>(3,3) = 1; 

    return Homo;
}

编译错误:

error C2784: 'void Rot2Homo(cv::Mat_<cv::Vec<NumType,1>>,cv::Mat_<cv::Vec<NumType,1>>,cv::Mat &)' : could not deduce template argument for 'cv::Mat_<cv::Vec<NumType,1>>' from 'cv::Mat'

link中已成功指出并解决了此类似用法。但是这里出现了错误。

感谢任何提示!

1 个答案:

答案 0 :(得分:0)

您在调用函数NumType时需要指定Rot2Homo,例如在调用函数时写Rot2Homo<float>(...);

必须在运行时确定模板类型。模板化不是某种运行时猜测,它是一种为任何类型编写的方法,然后在需要时将其用于任何给定类型。