我正在尝试计算代码中的协方差矩阵,但是这样做会出错。我有我想要使用的平均值数组。这是我的代码
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'
答案 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)