【发布时间】:2012-03-15 16:06:51
【问题描述】:
我在计算 OpenCV 中的特征向量、值时遇到问题。我在 Python (SciPy) 中做过同样的事情,但我在移植我的代码时遇到了麻烦。
我有 2 个矩阵 Sw, Sb,其值为:
Sw:[0.0112962962962963, 0.00675925925925926;
0.00675925925925926, 0.007962962962962963]
Sb:[0.0530787037037037, 0.01657407407407407;
0.01657407407407407, 0.004606481481481482]
对于上述 Sw、Sb 的值,使用以下方法在 SciPy (Python) 中计算特征值、特征向量:
from numpy import *
from scipy import linalg as la
evals,evecs = la.eig(Sw,Sb)
产生以下结果:
evals:
[ 0.17299805+0.j -8.47412141+0.j]
evecs:
[[ 1. -0.31926401]
[-0.54311321 1. ]]
我正在尝试将上述代码移植到 OpenCV (C++ API)
对于相同的Sw、Sb值,在OpenCV中计算特征值和特征向量使用
cv::eigen(Sb,Sb_Eig_Val,Sb_Eig_Vec);
产生不同的值,即:
Sb_Eig_Val
[0.05820394496612978; -0.0005187597809445917]
Sb_Eig_Vec
[0.9553644860284983, 0.2954296850952915;
-0.2954296850952915, 0.9553644860284983]
我错过了什么吗?
【问题讨论】:
-
请编辑您的问题,询问您真正有兴趣了解的内容。
-
这个问题可能更适合scicomp