2016-04-05 5 views
0

Ich habe eine Matrix data = 8 rows x 1 cols deklarieren in opencv. Ich möchte den ganzen Wert lesen und dem Eigenen Vektor zuweisen.Opencv C++ Lesen opencv Mat zugewiesen Eigenvektor

#include <opencv2/core.hpp> 
#include <opencv2/opencv.hpp> 
#include <vector> 
#include <set> 
#include <Eigen/Core> 
#include <Eigen/Dense> 
using namespace Eigen; 

int main(int argc, char** argv) 
{ 
Mat data; 
int unique = data.rows; 
VectorXd actualLabel(unique); 
for(int i=0;i<unique;i++) 
{ 
    for(int k = 0; k < train_label.cols; k++) 
    { 
     int val = train_label.at<double>(i, k); 
     actualLabel(i) = val; 
     cout<< actualLabel(i) << endl; 
    } 
} 

return 0; 
} 

aber die Ausgabe ist alles 0 bei Vector actualLable. Wie kann ich den tatsächlichen Wert von Mat-Daten abrufen?

+0

Warum speichern Sie Wert in int Variable vor dem Schreiben? – alexisrozhkov

+0

@ user3896254 können Sie mir bitte zeigen, wo soll ich mich ändern? –

+0

'int val = train_label.at (i, k);' zu 'doppelt val = train_label.at (i, k);' – alexisrozhkov

Antwort

0

fand ich die Lösung hier möchte das volle Programm

#include <opencv2/core.hpp> 
#include <opencv2/opencv.hpp> 
#include <vector> 
#include <set> 
#include <Eigen/Core> 
#include <Eigen/Dense> 
using namespace Eigen; 

int main(int argc, char** argv) 
{ 
//example if data with assigned value 
Mat kern = (Mat_<double>(8, 1) << 0, -1, 0,-1, 5, -1,0, -1); 
cout << kern << endl; 
int unique = data.rows; 
VectorXd actualLabel(unique); 
for(int i=0;i<unique;i++) 
{ 
    for(int k = 0; k < train_label.cols; k++) 
    { 
     double val = train_label.at<Vec2d>(i, k)[0]; 
     actualLabel(i) = val; 
     cout<< actualLabel(i) << endl; 
    } 
} 

return 0; 
} 

bitte kommentieren teilen, wenn alles, was ich hier noch mit kürzestem Code verbessern kann. Danke