有任何一个在OpenCV上比较eigen函数&特征?

发布于 2025-01-30 16:21:44 字数 670 浏览 1 评论 0原文

我需要用C ++计算特征值和特征值,并用最小的特征值检索特征向量。

因此,我找到了两个库(OpenCV& eigen),它们提供了计算特征的功能,并且 想比较他们的速度。据我所知,埃吉恩专门从事数值和线性代数,但是在实验之后,特征比OpenCV慢。有人知道为什么吗?我的代码不有效吗?

EIGEN片段:

Eigen::EigenSolver<Eigen::MatrixXd> es(h_cov);
Eigen::VectorXd eigen_value = es.eigenvalues().real();
Eigen::MatrixXd eigen_vec = es.eigenvectors().real();
int min_index = -1;
eigen_values.minCoeff(&min_index);
Eigen::Vector3d smallest_eigen_vec = eigen_vec.col(min_index);

OpenCV摘要:

cv::Mat33d eigen_vec;
cv::Matx31d eigen_val;
cv::eigen(h_conv, eigen_val, eigen_vec);
cv::Matx31d smallest_eigen_vec = eigen_vec.row(2).t();

I need to compute the eigenvalue and eigenvector with C++ and retrieve the eigenvector with the smallest eigenvalue.

So I found two libraries(OpenCV & Eigen) that provided the function to compute eigen, and
want to compare their speed. As far as I know Eigen is specialized in numerical and linear algebra, but after the experiment eigen is slower than OpenCV. Does anyone know why? Is my code not efficient?

Eigen snippet:

Eigen::EigenSolver<Eigen::MatrixXd> es(h_cov);
Eigen::VectorXd eigen_value = es.eigenvalues().real();
Eigen::MatrixXd eigen_vec = es.eigenvectors().real();
int min_index = -1;
eigen_values.minCoeff(&min_index);
Eigen::Vector3d smallest_eigen_vec = eigen_vec.col(min_index);

OpenCV snippet:

cv::Mat33d eigen_vec;
cv::Matx31d eigen_val;
cv::eigen(h_conv, eigen_val, eigen_vec);
cv::Matx31d smallest_eigen_vec = eigen_vec.row(2).t();

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文