2012-03-26 25 views
7

tengo problemas en el uso de Eigen3 Biblioteca junto con OpenCV aplicación en C++ . He instalado la biblioteca Eigen3 en mi Ubuntu con el siguiente comando:Biblioteca Eigen con OpenCV 2.3.1

sudo apt-get install libeigen3-dev 

soy capaz de compilar y usar muestra Eigen3 aplicaciones (biblioteca Eigen3 está instalado y funciona) cuando se utiliza el siguiente comando para compilar .

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

Quiero usar la biblioteca Eigen instalada con OpenCV.

Compilé fuente OpenCV con indicadores siguientes:

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

Mi código OpenCV incluye los siguientes encabezados y espacio de nombres:

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

Sin embargo, cuando normalmente compilar aplicaciones OpenCV, mi compilador me da el siguiente error:

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 

¿Cómo puedo solucionar este problema?

+0

¿Olvidó el '-I/usr/include/eigen3' en su aplicación OpenCV? –

+0

No. Estoy compilando mi aplicación OpenCV con el siguiente 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

Respuesta

7

sólo tenía que incluir

#include <Eigen/Dense> 

antes de incluir cabeceras OpenCV eso es todo. Los compilé al incluir los encabezados de lib de Eigen y los encabezados de lib de OpenCV.

1

Primero comprobaré que las direcciones de eigen include se encuentran. Puede utilizar un CMakeList.txt para hacerlo (y se debe utilizar las funciones cmake encontrar las cabeceras y enlace a las bibliotecas en lugar de opciones del compilador)

siguientes se podría tratar de eliminar los espacios de nombres utilizando

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

soy capaz de ver que los encabezados de biblioteca Eigen3 están en su lugar en/usr/include/eigen3 directory y puedo usarlos. ¿Puede explicar cómo usar un CMakeList.txt o dirigirme a un enlace? – garak

Cuestiones relacionadas