当我在 /core/src/convert.cpp 中获得此功能时,我正在浏览 OpenCV 源代码:
void merge(const cv::vector<cv::Mat>& mv, cv::Mat _dst)
{
merge(&mv[0] ,3, _dst);
}
只有 2 个参数的原始函数怎么可能:
合并(常量 cv::vector& mv, cv::Mat _dst)
以及带有 3 个参数的递归调用
合并(常量 cv::Mat*,int,cv::Mat&)
这绝对不是递归调用。通话
merge(&mv[0] ,3, _dst);
没有打电话
void merge(const cv::vector<cv::Mat>& mv, cv::Mat _dst)
这很清楚,因为参数计数不匹配。
解释是merge
过载。还有一个带有三个参数的版本。这三个参数版本在您包含的头文件之一中声明。
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)
。