OpenCV 4.5.4计算特征向量结果错误,求助问题排查
问题:OpenCV eigen函数计算特征值/特征向量结果错误
环境与安装情况
- 系统:WSL2(Windows Subsystem for Linux)Ubuntu
- OpenCV安装命令:
apt-get install libopencv-dev - 版本验证:执行
dpkg -s libopencv-dev | grep Version,输出为Version: 4.5.4+dfsg-9Ubuntu4 - 需求:计算特征向量,需支持实特征值与复数特征值
代码实现
CMakeLists.txt
cmake_minimum_required(VERSION 3.5) project(testcv) find_package( OpenCV REQUIRED ) include_directories(${OpenCV_INCLUDE_DIRS}) add_executable(testcv testcv.cpp) target_link_libraries(testcv ${OpenCV_LIBS})
测试程序testcv.cpp
#include <iostream> #include <opencv2/core/mat.hpp> #include <opencv2/imgproc.hpp> using namespace cv; using namespace std; int main() { float numbers[] = { 0, 2, 1, 0 }; Mat A = Mat(2,2,CV_32F,numbers); Mat eigen_vals, eigen_vecs; eigen(A, eigen_vals, eigen_vecs); cout << "A: " << A << endl << "eigen_vals: " << eigen_vals << endl << "eigen_vecs: : " << eigen_vecs << endl << "Done." << endl; return 0; }
编译运行命令
cmake . make ./testcv
运行结果
A: [0, 2; 1, 0] eigen_vals: [0.99999994; -0.99999994] eigen_vecs: : [0.70710677, 0.70710677; -0.70710677, 0.70710677] Done.
Octave计算对比结果
>> A A = 0 2 1 0 >> lambda lambda = Diagonal Matrix 1.4142 0 0 -1.4142 >> B B = 0.8165 -0.8165 0.5774 0.5774 >> A*B ans = 1.1547 1.1547 0.8165 -0.8165
OpenCV计算结果明显错误,请问在这个接口调用中哪里操作出错了?
内容的提问来源于stack exchange,提问作者Markus-Hermann
相关产品推荐
相关产品推荐

