Ошибка opencv Ошибка подтверждения Строка Mat.cpp: 537

Я пытаюсь найти собственные значения и собственные векторы матрицы, как показано ниже:

int m = 5;

float b[5][5] = {
    { 1.96 , -6.49, -0.47, -7.20, -0.65},
    { -6.49,  3.80, -6.39,  1.50, -6.34},
    { -0.47, -6.39,  4.17, -1.51,  2.67},
    { -7.20,  1.50, -1.51,  5.70,  1.80},
    { -0.65, -6.34,  2.67,  1.80, -7.10}
    };

    cv::Mat E, V;
    cv::Mat M(m,m,CV_64FC1,b);
    cv::eigen(M,E,V);

    // eigenvalues sorted desc
    for(int i=0; i < 5; i++)
        std::cout << E.at<float>(0,i) << " \t";

person raghuram    schedule 19.06.2015    source источник


Ответы (1)


Это подходит для меня:

int m = 5;

double b[5][5] = {
    { 1.96 , -6.49, -0.47, -7.20, -0.65},
    { -6.49,  3.80, -6.39,  1.50, -6.34},
    { -0.47, -6.39,  4.17, -1.51,  2.67},
    { -7.20,  1.50, -1.51,  5.70,  1.80},
    { -0.65, -6.34,  2.67,  1.80, -7.10}
    };

    cv::Mat E, V;
    cv::Mat M(m,m,CV_64FC1,b);

    cout << "M: " << M << endl;

    cv::eigen(M,E,V);

    cout << "E: " << E << endl;
    cout << "V: " << V << endl;

Проблема в том, что "CV_64FC1" является двойным, а не плавающим (проверьте типы резюме здесь).

person Oliver Wilken    schedule 19.06.2015
comment
Большое спасибо .. Я проверю типы резюме. - person raghuram; 19.06.2015
comment
предложенный код, который я опубликовал, работает для вас? - person Oliver Wilken; 20.06.2015