-1

当我在 /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&)

4

2 回答 2

1

这绝对不是递归调用。通话

merge(&mv[0] ,3, _dst);

没有打电话

void merge(const cv::vector<cv::Mat>& mv, cv::Mat _dst)

这很清楚,因为参数计数不匹配。

解释是merge过载。还有一个带有三个参数的版本。这三个参数版本在您包含的头文件之一中声明。

于 2013-05-08T12:45:27.597 回答
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)

于 2013-05-08T12:45:47.177 回答