当我在/core/src/convert.cpp中获得此功能时,我正在浏览OpenCV源代码:
void merge(const cv::vector<cv::Mat>& mv, cv::Mat _dst)
{
merge(&mv[0] ,3, _dst);
}
Original函数如何只有2个参数:
merge(const cv :: vector&amp; mv,cv :: Mat _dst)
和3个参数的递归调用
merge(const cv :: Mat *, int ,cv :: Mat&amp;)
答案 0 :(得分:1)
这绝对不是一个递归调用。电话
merge(&mv[0] ,3, _dst);
没有打电话
void merge(const cv::vector<cv::Mat>& mv, cv::Mat _dst)
由于参数计数不匹配,因此很清楚。
解释是merge
超载。还有另一个版本有三个参数。这三个参数版本在您包含的一个头文件中声明。
答案 1 :(得分:1)
merge(&mv[0] ,3, _dst);
不是对void merge(const cv::vector<cv::Mat>& mv, cv::Mat _dst)
的调用。
必须存在重载函数,即具有相同名称但具有不同签名的函数。一个如void merge(const cv::vector<cv::Mat>& mv, int something, cv::Mat _dst)
。