在openCv中使用calcCovarMatrix时出错

时间:2012-04-27 17:28:41

标签: eclipse opencv computer-vision covariance

我正在尝试计算代码中的协方差矩阵,但是这样做会出错。我有我想要使用的平均值数组。这是我的代码

Mat Zt(Z);
Mat Zttranspose;
Mat covarZ=cvCreateMat(image->nChannels,image->nChannels,CV_32FC1);

Zttranspose=Zt.t();

Mat_<float> arraymean=(Mat_<float>(3,3)<< meanb, meang, meanr);

calcCovarMatrix(Zt,covarZ,arraymean,CV_COVAR_USE_AVG,CV_64F)

但是我收到以下错误:

OpenCV Error: Assertion failed (((flags & CV_COVAR_ROWS) != 0) ^ ((flags & CV_COVAR_COLS) != 0)) in calcCovarMatrix, file /usr/local/src/OpenCV-2.3.0/modules/core/src/matmul.cpp, line 2127 terminate called after throwing an instance of 'cv::Exception'

3 个答案:

答案 0 :(得分:2)

Mat covarZ = cvCreateMat(..);我认为你已经混合了C和C ++ API。

您可能需要查看此链接http://pastebin.com/cWQi4ngv

我已经尝试过并且有效。

答案 1 :(得分:0)

您正在使用CV_32FC1创建矩阵,然后使用CV_64F调用calcCovarMatrix - 您需要使它们与初学者保持一致。

答案 2 :(得分:0)

这将解决您的问题

-

calcCovarMatrix(Zt,covarZ,arraymean,CV_COVAR_USE_AVG | CV_COVAR_ROWS ,CV_64F)