使用OpenCV计算两个数组的互相关

时间:2014-12-03 04:15:27

标签: opencv matrix cross-correlation

我正在使用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"匹配参数列表"。任何人都可以帮我解决这个问题。提前谢谢。

1 个答案:

答案 0 :(得分:0)

您发布的代码存在一些问题:

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

解决方案:

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

    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);

希望它有所帮助。