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

CV_32FC1 を使用してマトリックスを作成し、CV_64F を使用して calcCovarMatrix を呼び出しています。最初にそれらを一貫させる必要があります。

于 2013-11-01T20:06:02.323 に答える