You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 10:05:59