2012-08-28 11 views
7

Estoy tratando de ejecutar uno de los ejemplos de tutoriales de OpenCV. Se trata de encontrar un objeto conocido con el uso de la coincidencia de puntos clave basada en Flann. El código se puede encontrar en Features2D + Homography to find a known object.Flann funciona externalidades no resueltas

Sé que va a preguntar "¿Ha vinculado las bibliotecas?" o pregunta similar. Sí, he estado usando OpenCV durante 3 semanas con varios ejemplos que hacen uso de casi todas las bibliotecas. Y no hubo problema hasta este día.

Así que agregué estas dependencias de la biblioteca a la configuración de entrada del enlazador de Visual Studio. Incluir directorios también funciona bien.

C:\OpenCV2.4\lib\opencv_core242d.lib 
C:\OpenCV2.4\lib\opencv_highgui242d.lib 
C:\OpenCV2.4\lib\opencv_video242d.lib 
C:\OpenCV2.4\lib\opencv_ml242d.lib 
C:\OpenCV2.4\lib\opencv_legacy242d.lib 
C:\OpenCV2.4\lib\opencv_imgproc242d.lib 
C:\OpenCV2.4\lib\opencv_objdetect242d.lib 
C:\OpenCV2.4\lib\opencv_flann242d.lib 
C:\OpenCV2.4\lib\opencv_nonfree242d.lib 
C:\OpenCV2.4\lib\opencv_calib3d242d.lib 

El error que obtuve es un error de engarce. No puede resolver las funciones de Flann.

1>------ Build started: Project: flannMatch, Configuration: Debug Win32 ------ 
1>flannMatch.obj : error LNK2019: unresolved external symbol "void __cdecl cv::drawMatches(class cv::Mat const &,class std::vector<class cv::KeyPoint,class std::allocator<class cv::KeyPoint> > const &,class cv::Mat const &,class std::vector<class cv::KeyPoint,class std::allocator<class cv::KeyPoint> > const &,class std::vector<struct cv::DMatch,class std::allocator<struct cv::DMatch> > const &,class cv::Mat &,class cv::Scalar_<double> const &,class cv::Scalar_<double> const &,class std::vector<char,class std::allocator<char> > const &,int)" ([email protected]@@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected]@@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected]@@[email protected]@[email protected]@[email protected][email protected][email protected]@[email protected]@@[email protected]@Z) referenced in function _main 
1>flannMatch.obj : error LNK2019: unresolved external symbol "public: void __thiscall cv::DescriptorMatcher::match(class cv::Mat const &,class cv::Mat const &,class std::vector<struct cv::DMatch,class std::allocator<struct cv::DMatch> > &,class cv::Mat const &)const " ([email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected]@@[email protected]@[email protected]) referenced in function_main 
1>flannMatch.obj : error LNK2019: unresolved external symbol "public: __thiscall cv::FlannBasedMatcher::FlannBasedMatcher(class cv::Ptr<struct cv::flann::IndexParams> const &,class cv::Ptr<struct cv::flann::SearchParams> const &)" ([email protected]@@[email protected][email protected]@[email protected]@@@[email protected][email protected]@[email protected]@@@[email protected]@Z) referenced in function _main 
1>flannMatch.obj : error LNK2019: unresolved external symbol "public: void __thiscall cv::DescriptorExtractor::compute(class cv::Mat const &,class std::vector<class cv::KeyPoint,class std::allocator<class cv::KeyPoint> > &,class cv::Mat &)const " ([email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected]@@[email protected]@[email protected]@Z) referenced in function _main 
1>flannMatch.obj : error LNK2019: unresolved external symbol "public: void __thiscall cv::FeatureDetector::detect(class cv::Mat const &,class std::vector<class cv::KeyPoint,class std::allocator<class cv::KeyPoint> > &,class cv::Mat const &)const " ([email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected]@@[email protected]@[email protected]) referenced in function _main 
1>flannMatch.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall cv::DescriptorMatcher::~DescriptorMatcher(void)" ([email protected]@@[email protected]) referenced in function "public: virtual __thiscall cv::FlannBasedMatcher::~FlannBasedMatcher(void)" ([email protected]@@[email protected]) 
1>flannMatch.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall cv::DescriptorMatcher::DescriptorCollection::~DescriptorCollection(void)" ([email protected]@[email protected]@[email protected]) referenced in function "public: virtual __thiscall cv::FlannBasedMatcher::~FlannBasedMatcher(void)" ([email protected]@@[email protected]) 
1>flannMatch.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall cv::FeatureDetector::~FeatureDetector(void)" ([email protected]@@[email protected]) referenced in function "public: virtual __thiscall cv::Feature2D::~Feature2D(void)" ([email protected]@@[email protected]) 
1>flannMatch.obj : error LNK2019: unresolved external symbol "public: virtual __thiscall cv::DescriptorExtractor::~DescriptorExtractor(void)" ([email protected]@@[email protected]) referenced in function "public: virtual __thiscall cv::Feature2D::~Feature2D(void)" ([email protected]@@[email protected]) 

También sé que navegar y tamizar se movió a no libre, gracias a una de las preguntas aquí. A primera vista, pensé que podría ser porque tengo dos versiones de OpenCV (2.2 y 2.4) y por lo tanto estaba haciendo la diferencia. Así que eliminé 2.2 e intenté ejecutar otro programa. Funcionó bien, pero aún así este error no desapareció.

Así que mi pregunta, ¿qué echo de menos aquí? ¿Hay otra dependencia de la biblioteca? ¿Qué es lo que no puedo ver? Cualquier ayuda es apreciada.

- EDITAR -

Cómo no voy a verlo? Lo siento mucho por publicar una pregunta fácil como esta. Me siento muy estupido. Me olvidé de agregar esta dependencia.

C:\OpenCV2.4\lib\opencv_features2d242d.lib 

No creo que nadie se lo vuelva a perder.

+0

Usted no es el primero, ni la última persona que encontrará la respuesta poco después de publicar la pregunta :). Gracias por compartir la respuesta con nosotros. – bjoernz

+0

Sin embargo, una respuesta se debe compartir como * respuesta *, no como parte de la pregunta. –

+0

Lo sé, pero debido a la reputación, no puedo responder mis preguntas hasta que pasaron 8 horas. Todavía quedan 6 horas: D – yutasrobot

Respuesta

2

¿Cómo no puedo verlo? Realmente lo siento por publicar una pregunta fácil como esta. Me siento muy estupido. Me olvidé de agregar esta dependencia.

C:\OpenCV2.4\lib\opencv_features2d242d.lib 

No creo que nadie se lo vuelva a perder.