1

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

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'
4

3 回答 3

2

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

您可能想看看这个链接http://pastebin.com/cWQi4ngv

我已经尝试过了,它有效。

于 2012-04-29T10:02:35.023 回答
0

这将解决您的问题

-

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

于 2014-03-30T20:55:18.110 回答
0

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

于 2013-11-01T20:06:02.323 回答