2012-03-26 11 views
7

ho difficoltà ad utilizzare Eigen3 Biblioteca insieme con OpenCV applicazioni in C++ . Ho installato biblioteca Eigen3 sulla mia Ubuntu utilizzando il seguente comando:Utilizzando Eigen Biblioteca con OpenCV 2.3.1

sudo apt-get install libeigen3-dev 

Sono in grado di compilare ed utilizzare campione Eigen3 applicazioni (biblioteca Eigen3 è installato e funziona) quando uso il seguente comando per compilare .

g++ -I/usr/include/eigen3 Eig.cpp -o Eig 

Desidero utilizzare la libreria Eigen installata con OpenCV.

ho compilato fonte OpenCV con i seguenti bandiere:

cmake -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=OFF -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON USE_EIGEN=/usr/include/eigen3 .. 

Il mio codice OpenCV comprende le seguenti intestazioni e namespace:

#include <opencv2/core/core.hpp> 
#include <opencv2/imgproc/imgproc.hpp> 
#include <opencv2/highgui/highgui.hpp> 
#include <assert.h> 
#include <opencv2/core/eigen.hpp> 

using namespace cv; 
using namespace std; 
using namespace Eigen; 

Tuttavia, quando normalmente compilo applicazione OpenCV, il mio compilatore mi dà il seguente errore:

In file included from Read.cpp:6: 
/usr/local/include/opencv2/core/eigen.hpp:54: error: expected ‘,’ or ‘...’ before ‘::’ token 
/usr/local/include/opencv2/core/eigen.hpp: In function ‘void cv::eigen2cv(int)’: 
/usr/local/include/opencv2/core/eigen.hpp:56: error: ‘src’ was not declared in this scope 
/usr/local/include/opencv2/core/eigen.hpp:56: error: ‘Eigen’ is not a class or namespace 
/usr/local/include/opencv2/core/eigen.hpp:60: error: ‘dst’ was not declared in this scope 
/usr/local/include/opencv2/core/eigen.hpp:66: error: ‘dst’ was not declared in this scope 

Come posso risolvere questo problema?

+0

Hai dimenticato l'opzione '-I/usr/include/eigen3' nella tua applicazione OpenCV? –

+0

No. Sto compilando la mia applicazione OpenCV con il seguente comando: 'g ++ -I/usr/include/eigen3 -I/usr/local/include/opencv -I/usr/local/include -L/usr/local/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_ml -lopencv_video -lopencv_features2d -lopencv_calib3d -lopencv_objdetect -lopencv_contrib -lopencv_legacy -lopencv_flann -g Read.cpp -o Read' – garak

risposta

7

ho dovuto includere

#include <Eigen/Dense> 

prima di includere le intestazioni OpenCV questo è tutto. Li ho compilati includendo le intestazioni lib di Eigen e le intestazioni di lib di OpenCV.

1

Prima vorrei ricontrollare che le direzioni di inclusione di eigen siano state trovate. È possibile utilizzare un CMakeList.txt di farlo (e si dovrebbe utilizzare le funzioni cmake per trovare le intestazioni e link a biblioteche, invece di flag di compilazione)

Avanti si potrebbe tentare di rimuovere le utilizzando namespace

using namespace cv; 
    using namespace std; 
    using namespace Eigen; 
+0

Sono in grado di vedere che le intestazioni della libreria Eigen3 sono a posto in/usr/include/eigen3 directory e sono in grado di usarli. Puoi per favore approfondire come utilizzare un CMakeList.txt o indirizzarmi a un link? – garak

Problemi correlati