0

我正在使用 OpenCV 计算取自某个矩阵 X(16x128 维度)的两行的互相关。这就是我所做的:

cv::Mat channel1(1,128,CV_32F, X.row(1).clone());     //take the first row of matrix X
cv::Mat channel2(1,128,CV_32F, X.row(10).clone());    //take the 10th row of matrix X
cv::Mat result;
cvMatchTemplate(channel1,channel2,result, CV_TM_CCORR);

但是,我收到以下错误:“错误:没有构造函数实例“cv::Mat::Mat”与参数列表匹配”。谁能帮我解决这个问题。先感谢您。

4

1 回答 1

0

您发布的代码存在几个问题:

1) 没有与您初始化“channel1”和“channel2”矩阵的方式相匹配的 cv::Mat 构造函数实例。

解决方案:

  • 以这种方式声明您的矩阵:

    cv::Mat channel1(X.row(1).clone());     //take the first row of matrix X
    cv::Mat channel2(X.row(10).clone());    //take the 10th row of matrix X
    

2) cvMatchTemplate 是老式的 C-api,并且 (afaik) 与面向 C++ 的 cv::Mat 不兼容。

解决方案:

  • (正如 berak 建议的那样)使用 cv::matchTemplate 代替。

3) 更好的是,您可以直接使用 matchTemplate:

    cvMatchTemplate(X.row(1).clone(),X.row(10).clone(),result, CV_TM_CCORR);

希望能帮助到你。

于 2014-12-03T16:12:05.427 回答