gpt4 book ai didi

c++ - 使用 OpenCV 计算协方差矩阵

转载 作者:太空宇宙 更新时间:2023-11-03 22:56:52 27 4
gpt4 key购买 nike

我正在尝试使用 opencv 的 cv::calcCovarMatrix 来获取协方差矩阵。我创建了一个虚拟测试用例:

A = [1 2; 3 4] // matlab style 
B = [1 0; 5 8]

如果我用 matlab 运行它,我得到:

>> cov(A,B)
ans =
1.6667 4.3333
4.3333 13.6667

根据我的计算,这似乎没问题,但是当我使用 cv::calcCovarMatrix 时,我无法获得相同的结果:

cv::Mat covar, mean;
cv::Mat A = (cv::Mat_<float>(2,2) << 1, 2, 3, 4);
cv::Mat B = (cv::Mat_<float>(2,2) << 1, 0, 5, 8);
cv::Mat x[2] = {A, B};
cv::calcCovarMatrix(x, 2, covar, mean, CV_COVAR_SCRAMBLED );
std::cout << covar << std::endl;
// gives [6, -6;
// -6, 6]

我错过了什么?

最佳答案

只是缺少了一面旗帜。尝试:

cv::calcCovarMatrix(x, 2, covar, mean, cv::COVAR_ROWS | cv::COVAR_SCRAMBLED );

COVAR_ROWS mean:所有输入 vector 都存储为样本矩阵的行。 (来自 opencv 3.0 文档)

关于c++ - 使用 OpenCV 计算协方差矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28257246/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com