2015-06-19 3 views
0

Я пытаюсь найти собственные значения и собственные векторы матрицы, как показано ниже:OpenCV ошибка Assertion удалось 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"; 

ответ

0

Это работает для меня:

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» не является плавающим (check CV-types here).

+0

Большое спасибо .. Я проверю CV-типы. – raghuram

+0

ли предлагаемый код, который был отключен, я опубликовал для вас работу? –

Смежные вопросы