es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Conflicto entre OpenCV 4 y cv_bridge en nodo ROS.

Estoy empezando un proyecto con OpenCV y ROS y necesito usar xfeatures2d que está en opencv_contrib. Sigo estas instrucciones y modifico mi archivo CMake de la siguiente manera:

Después de catkin_make:

Durante la ejecución, algunas funciones de imgproc como el algoritmo CLAHE no funcionan y mi nodo deja de funcionar.

Cuando compilo con catkin_make, cv_bridge encuentra opencv3.2 por defecto en ROS, pero mi nodo encuentra opencv4 gracias al archivo CMake. Entonces, ¿puedo arreglar esto? ¿Es posible construir en opencv3.2 un opencv_contrib? ¿Es posible cambiar la versión de opencv en cv_bridge?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Sí, es posible solucionar este problema. Una opción es enlazar explícitamente la biblioteca opencv_xfeatures2d durante la compilación, como se muestra a continuación:

    add_executable(visual_Odometry src/visual_Odometry.cpp)
    target_link_libraries(visual_Odometry
    ${catkin_LIBRARIES}
    ${OpenCV_LIBRARIES}
    opencv_xfeatures2d)

    Esto asegurará que se utilice la versión correcta de la biblioteca durante la ejecución.

    Alternativamente, puede construir opencv_contrib para la versión de OpenCV que está utilizando ROS (en este caso, OpenCV 3.2). Para hacer esto, puede descargar el código fuente de opencv_contrib para la versión 3.2 y construirlo utilizando las instrucciones de instalación proporcionadas por OpenCV. Una vez que haya construido la biblioteca, deberá actualizar su archivo CMakeLists.txt para utilizar la versión correcta de la biblioteca.

    No se recomienda cambiar la versión de OpenCV utilizada por cv_bridge, ya que esto puede causar problemas de compatibilidad con otros paquetes de ROS que dependen de cv_bridge. Es mejor construir y enlazar con la versión de OpenCV que ROS está utilizando.

Comments are closed.