opencv2协方差矩阵奇怪的结果
opencv2 covariance matrix strange results
以下代码给出了不一致的协方差矩阵大小。
cv::Mat A = (cv::Mat_<float>(3,2) << -1, 1, -2, 3, 4, 0);
cv::Mat covar1, covar2, covar3, covar4, mean;
calcCovarMatrix(A, covar1, mean, CV_COVAR_NORMAL | CV_COVAR_ROWS);
calcCovarMatrix(A, covar2, mean, CV_COVAR_SCRAMBLED | CV_COVAR_ROWS);
calcCovarMatrix(A, covar3, mean, CV_COVAR_NORMAL | CV_COVAR_COLS);
calcCovarMatrix(A, covar4, mean, CV_COVAR_SCRAMBLED | CV_COVAR_COLS);
std::cout << "size: " << covar1.size() << "\n";
std::cout << "size: " << covar2.size() << "\n";
std::cout << "size: " << covar3.size() << "\n";
std::cout << "size: " << covar4.size() << "\n";
covar1
和 covar2
应该具有相同的大小,因为它们都描述了行的协方差,并且 covar3
和 covar4
应该具有相同的大小,因为它们两者都分别描述了列上的协方差。然而,输出是:
size: [2 x 2]
size: [3 x 3]
size: [3 x 3]
size: [2 x 2]
的calcCovarMatrix()
docs,具体说的时候用CV_COVAR_SCRAMBLED
"The covariance matrix will be nsamples x nsamples
."
以下代码给出了不一致的协方差矩阵大小。
cv::Mat A = (cv::Mat_<float>(3,2) << -1, 1, -2, 3, 4, 0);
cv::Mat covar1, covar2, covar3, covar4, mean;
calcCovarMatrix(A, covar1, mean, CV_COVAR_NORMAL | CV_COVAR_ROWS);
calcCovarMatrix(A, covar2, mean, CV_COVAR_SCRAMBLED | CV_COVAR_ROWS);
calcCovarMatrix(A, covar3, mean, CV_COVAR_NORMAL | CV_COVAR_COLS);
calcCovarMatrix(A, covar4, mean, CV_COVAR_SCRAMBLED | CV_COVAR_COLS);
std::cout << "size: " << covar1.size() << "\n";
std::cout << "size: " << covar2.size() << "\n";
std::cout << "size: " << covar3.size() << "\n";
std::cout << "size: " << covar4.size() << "\n";
covar1
和 covar2
应该具有相同的大小,因为它们都描述了行的协方差,并且 covar3
和 covar4
应该具有相同的大小,因为它们两者都分别描述了列上的协方差。然而,输出是:
size: [2 x 2]
size: [3 x 3]
size: [3 x 3]
size: [2 x 2]
的calcCovarMatrix()
docs,具体说的时候用CV_COVAR_SCRAMBLED
"The covariance matrix will be nsamples x nsamples
."