Quantcast
Channel: ROS Answers: Open Source Q&A Forum - RSS feed
Viewing all articles
Browse latest Browse all 69

opencv2 and opencv3 wrong inclusion with cv_bridge

$
0
0
Hi all, I'm trying to compile a node which uses internally the `applyColorMap` function, which is defined inside contrib in OpenCV2 and it is defined in core in OpenCV3. I have both installed, OpenCV2 with the ros package in /usr/include, and OpenCV3 manually installed in /usr/local/include. To force the use of OpenCV2 set the following CMakeList.txt: cmake_minimum_required(VERSION 2.8.3) project(height_publisher) find_package(catkin REQUIRED COMPONENTS roscpp nav_msgs cv_bridge image_transport pcl_conversions sensor_msgs tf tf_conversions) include_directories(${catkin_INCLUDE_DIRS}) set(CMAKE_BUILD_TYPE "Release") find_package(OpenCV 2.4 REQUIRED) include_directories(${OpenCV_INCLUDE_DIRS}) message("-- OpenCV version: ${OpenCV_VERSION}") message("-- OpenCV include dirs: ${OpenCV_INCLUDE_DIRS}") message("-- catkin include dirs: ${catkin_INCLUDE_DIRS}") find_package(PCL REQUIRED) include_directories(${PCL_INCLUDE_DIRS}) catkin_package() include_directories(include ${catkin_INCLUDE_DIRS}) add_executable(height_publisher_node src/HeightPublisher.cpp) target_link_libraries(height_publisher_node ${OpenCV_LIBS} ${PCL_LIBRARIES} ${catkin_LIBRARIES}) The message correctly says that we look for OpenCV in `/usr/include` and there is no reference to `/usr/local/include` anywhere The only include that has something to do with OpenCV is the following: #include If I have installed OpenCV2 only, the compiler complains a missing definition of `applyColorMap`. I can solve that by adding in the code the following include: #include But if I install OpenCV3, it complains about a redefinition of classes and redeclaration of constants. When I remove the line, the project compiles normally. But when I deploy the code on a machine without OpenCV3, it complains about the missing include. Adding the following: #if CV_MAJOR_VERSION == 2 #include #endif does not help, because the detected major version is 2, although somewhere in cv_bridge I guess, is using the OpenCV3, as indicated by the following error line: In file included from /usr/local/include/opencv2/core/core.hpp:48:0, from /usr/include/opencv2/contrib/contrib.hpp:46, from /home/mcamurri/git/dls-perception/height_publisher/src/HeightPublisher.h:3, from /home/mcamurri/git/dls-perception/height_publisher/src/HeightPublisher.cpp:1: /usr/local/include/opencv2/core.hpp:2422:18: error: previous definition of ‘class cv::LDA’ class CV_EXPORTS LDA

Viewing all articles
Browse latest Browse all 69

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>