[Jderobot] Conflicto entre librerias de OpenCV

JoseMaria josemaria.plaza en gmail.com
Mie Abr 9 09:17:01 CEST 2014


Hola Daniel,

tal vez lo mejor que es refactorices tu componente para trabajar
directamente con Cv:Mat. As� podr�s usar directamente las versiones m�s
recientes de OpenCV y hacer las transformaciones con ella. Tienes un
ejemplo en el repositorio de Francisco P�rez [1], en su componente
basic_component. 

�nimo,

JoseMaria
On Tue, 2014-04-08 at 22:09 +0200, Daniel Gomez Gomez wrote:
> Hola:
> 
> Me he encontrado con un problema al usar las librerias de Opencv, y
> quisiera preguntaros si os ha pasado lo mismo.
> 
> Quiero utilizar los algoritmos SIFT, SURF y mezcla de Gaussianas con
> Opencv 2.3.1 en mi componente, el cual usa cameraserver para servir las
> im�genes con el v�deo y usando el ICE de jderobot 5.0.
> 
> El caso es que al compilar, al necesitar las funciones de Opencv, las
> librer�as de opencv2 parece que son incompatibles con las librer�as por
> defecto de Opencv.
> 
> Es decir, que al incluir las directivas en mi c�digo
> 
> #include <cv.h>
> #include "opencv2/opencv.hpp"
> 
> no compila, dando una lista de errores del estilo:
> 
> /usr/local/include/opencv2/core/core_c.h:1616: error: redefinition of
> ‘double cvReadRealByName(const CvFileStorage*, const CvFileNode*, const
> char*, double)’
> /usr/local/include/opencv/cxcore.h:1692: error: ‘double
> cvReadRealByName(const CvFileStorage*, const CvFileNode*, const char*,
> double)’ previously defined here
> 
> el cual indica que hay un problema de mismas definiciones de funciones
> en ambas librer�as, lo cual me parece bastante extra�o el no poder usar
> cv.h y opencv2/opencv.hpp en un mismo componente.
> 
> Tratando de arreglar este problema, supe que la funci�n que quer�a usar
> estaba en la librer�a background_segm.hpp as� que quit� el include que
> hac�a referencia a opencv.hpp e inclu� el que he mencionado, quedando
> las directivas as�:
> 
> #include <cv.h>
> #include "opencv2/video/background_segm.hpp"
> 
> 
> Me daba otra serie de errores:
> 
> enorm/usr/local/include/opencv2/video/background_segm.hpp:355: error:
> variable ‘cv::CV_EXPORTS_W cv::BackgroundSubtractor’ has initializer but
> incomplete type
> /usr/local/include/opencv2/video/background_segm.hpp:357: error:
> expected primary-expression before ‘public’
> /usr/local/include/opencv2/video/background_segm.hpp:357: error:
> expected ‘}’ before ‘public’
> /usr/local/include/opencv2/video/background_segm.hpp:357: error:
> expected ‘,’ or ‘;’ before ‘public’
> /usr/local/include/opencv2/video/background_segm.hpp:361: error:
> expected constructor, destructor, or type conversion before ‘(’ token
> /usr/local/include/opencv2/video/background_segm.hpp:365: error:
> ‘virtual’ outside class declaration
> /usr/local/include/opencv2/video/background_segm.hpp:365: error:
> variable or field ‘getBackgroundImage’ declared void
> /usr/local/include/opencv2/video/background_segm.hpp:365: error:
> ‘OutputArray’ was not declared in this scope
> /usr/local/include/opencv2/video/background_segm.hpp:379: error:
> expected initializer before ‘:’ token
> /usr/local/include/opencv2/video/background_segm.hpp:407: error:
> expected class-name before ‘{’ token
> /usr/local/include/opencv2/video/background_segm.hpp:416: error:
> ‘InputArray’ has not been declared
> /usr/local/include/opencv2/video/background_segm.hpp:416: error:
> ‘OutputArray’ has not been declared
> /usr/local/include/opencv2/video/background_segm.hpp:419: error:
> ‘OutputArray’ has not been declared
> /usr/local/include/opencv2/video/background_segm.hpp:422: error: ‘Size’
> has not been declared
> /usr/local/include/opencv2/video/background_segm.hpp:424: error: ‘Size’
> does not name a type
> /usr/local/include/opencv2/video/background_segm.hpp:426: error: ‘Mat’
> does not name a type
> /usr/local/include/opencv2/video/background_segm.hpp:427: error: ‘Mat’
> does not name a type
> /usr/local/include/opencv2/video/background_segm.hpp:478: error:
> expected declaration before ‘}’ token
> 
> Parece que no encuentra las declaraciones de cv::Mat que podr�a
> proporcionarle cv.h, entre otros nombres de tipos b�sicos que usa
> Opencv.
> 
> Tampoco puedo pasar sin usar cv.h ya que trabajo con la librer�a de
> colorspaces y esta requiere cv.h.
> 
> Mi pregunta es si hab�is podido usar sin problema las librer�as cv.h y
> opencv2/opencv.hpp y compilarlo en un mismo componente. Porque cada vez
> que quiero usar funciones de Opencv que est�n en otras librer�as fuera
> de cv.h tengo millones de problemas.
> 
> Muchas gracias y perdonad el ladrillazo.
> 
> 
> _______________________________________________
> Jde-developers mailing list
> Jde-developers en gsyc.es
> http://gsyc.escet.urjc.es/cgi-bin/mailman/listinfo/jde-developers

-- 
http://gsyc.urjc.es/jmplaza 
Universidad Rey Juan Carlos



More information about the Jde-developers mailing list