2012-03-26 9 views
7

mam problemy w korzystaniu Eigen3 Bibliotekę wraz z OpenCV aplikacji w C++ . Mam zainstalowaną bibliotekę Eigen3 na moim Ubuntu za pomocą następującego polecenia:Korzystanie z biblioteki OpenCV EIGEN 2.3.1

sudo apt-get install libeigen3-dev 

jestem w stanie skompilować i używać próbkę Eigen3 aplikacje (biblioteka Eigen3 jest zainstalowany i działa), kiedy należy użyć następującego polecenia do kompilacji .

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

Chcę użyć zainstalowanej biblioteki Eigen z OpenCV.

Skompilowałem źródło OpenCV z następujących flag:

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

Mój kod OpenCV zawiera następujące nagłówki i nazw:

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

Jednak, kiedy normalnie skompilować aplikację OpenCV, mój kompilator daje mi następujący błąd:

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 

Jak rozwiązać ten problem?

+0

Czy zapomniałeś '-I/usr/include/eigen3' w swojej aplikacji OpenCV? –

+0

Nie. Kompiluję aplikację OpenCV za pomocą następującego polecenia: '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 Czytaj " – garak

Odpowiedz

7

po prostu musiałem to

#include <Eigen/Dense> 

przed tym nagłówkom OpenCV to wszystko. Skompilowałem je, włączając nagłówki lib Eigen i nagłówki biblioteki OpenCV.

1

Najpierw dwukrotnie sprawdziłbym, czy znalezione są kierunki własne. Można użyć CMakeList.txt to zrobić (i należy użyć funkcji CUpewnij znaleźć odnośnik do nagłówków i bibliotek zamiast flag kompilatora)

Następny można próbować usunąć za pomocą nazw

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

Jestem w stanie zobaczyć, że nagłówki bibliotek Eigen3 są na miejscu w/usr/włącz katalog/eigen3 i jestem w stanie z nich korzystać. Czy możesz wyjaśnić, jak korzystać z CMakeList.txt lub skierować mnie do linku? – garak