Mit Eigen-Bibliothek mit OpenCV 2.3.1
Ich habe Probleme bei der Verwendung Eigen3 Bibliothek zusammen mit OpenCV Anwendung in C++.
Ich habe installiert Eigen3-Bibliothek auf meinem Ubuntu mit dem folgenden Befehl:
sudo apt-get install libeigen3-dev
Ich bin in der Lage zu kompilieren und zu verwenden Probe Eigen3 Anwendungen (Eigen3 Bibliothek installiert und es funktioniert), wenn ich den folgenden Befehl zum kompilieren.
g++ -I/usr/include/eigen3 Eig.cpp -o Eig
Ich das installiert Eigen Bibliothek OpenCV.
Ich kompiliert OpenCV source mit folgenden flags:
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 ..
Meine OpenCV-code enthält die folgenden Header und 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;
Jedoch, wenn ich normal kompiliert OpenCV-Anwendung, mein compiler gibt mir die folgende Fehlermeldung:
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?
- Hast du vergessen, die
-I/usr/include/eigen3
in Ihrem OpenCV-Anwendung? - Nein. Ich kompiliere meine OpenCV-Anwendung mit dem folgenden Befehl:
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich musste einfach zählen
vor, einschließlich OpenCV Header thats all. Ich kompiliert habe, Sie, indem Sie die Eigen lib-Header und OpenCV lib-Header.
Als erstes würde ich überprüfen, dass die eigen include-Anweisungen gefunden werden.
Sie können eine CMakeList.txt zu tun (und Sie sollten den cmake-Funktionen zu finden-Header und link zu den Bibliotheken statt compiler-flags)
Nächstes könnten Sie versuchen, zu entfernen, die Verwendung von namespaces