2012-03-26 6 views
7

ich Schwierigkeiten habe, zusammen mit OpenCV Anwendung in C++Eigen3 Bibliothek in Verwendung.Mit Eigen-Bibliothek mit OpenCV 2.3.1

sudo apt-get install libeigen3-dev 

Ich bin in der Lage zu kompilieren und verwenden Probe Eigen3 Anwendungen (Eigen3 Bibliothek installiert und es funktioniert), wenn ich den folgenden Befehl verwenden zu kompilieren: Ich habe Eigen3 Bibliothek auf meinem Ubuntu mit dem folgenden Befehl installiert .

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

Ich möchte die installierte Eigenbibliothek mit OpenCV verwenden.

I OpenCV Quelle mit folgenden Flags zusammengestellt:

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 .. 

Mein OpenCV-Code die folgenden Header und Namensraum beinhaltet:

#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; 

Allerdings, wenn ich normalerweise OpenCV Anwendung kompilieren, mein Compiler gibt mir der folgende Fehler:

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 

Wie löse ich dieses Problem?

+0

Haben Sie das '-I/usr/include/eigen3' in Ihrer OpenCV-Anwendung vergessen? –

+0

Nein. Ich kompiliere meine OpenCV-Anwendung mit folgendem Befehl: 'g ++ -I/usr/include/eigen3 -I/usr/lokal/include/opencv -I/usr/local/include -L/usr/local/-lopencv_core lib -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

Antwort

7

ich hatte gerade

#include <Eigen/Dense> 

vor Header einschließlich OpenCV zu schließen, das ist alles. Ich habe sie kompiliert, indem ich die Eigen-Header und OpenCV-Header hinzugefügt habe.

1

Zuerst würde ich überprüfen, dass die Eigenen Richtungen enthalten sind. können Sie einen CMakeList.txt verwenden zu tun (und Sie sollten die cmake Funktionen verwenden Header und Link zu den Bibliotheken zu finden, anstatt Compiler-Flags)

Weiter Sie könnten versuchen, die Verwendung von Namensräumen entfernen

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

ich in der Lage bin, um zu sehen, dass die Eigen3 Bibliothek Header vorhanden sind, in/usr/include/eigen3-Verzeichnis und ich kann sie verwenden. Kannst du bitte erläutern, wie man eine CMakeList.txt benutzt oder mich zu einem Link führt? – garak