У меня есть ROS в системе, и он поставляется с opencv2.4.2. Я также установил opencv с sourceforge.net, который является opencv2.4.8 после блога samontab.
Теперь у меня есть исходный код, который при запуске автоматически выбирает opencv2.4.2. Я хочу, чтобы программа работала с использованием opencv2.4.8.
Я попытался добавить это в CMakeLists.txt
include_directories("/home/sai/workspace/opencv-2.4.8/include/opencv")
link_directories("/home/sai/workspace/opencv-2.4.8/lib")
set(OpenCV_LIBS
"opencv_gpu;opencv_contrib;opencv_legacy;opencv_objdetect;opencv_calib3d;opencv_features2d;opencv_video;opencv_highgui;opencv_ml;opencv_imgproc;opencv_flann;opencv_core")
find_package(OpenCV 2.4.8 REQUIRED)
target_link_libraries(exec {OpeCV_LIBS})
Но все же он использует Opencv, который поставляется с ROS, а также выдает такую ошибку
from /home/sai/workspace/loop_detector_on_depth_images/depth_loops/generic/src/dbow/FBit.h:5,
from /home/sai/workspace/loop_detector_on_depth_images/depth_loops/generic/src/dbow/FBit.cpp:1:
/opt/ros/fuerte/include/opencv2/flann/lsh_table.h: В функции-члене void cvflann :: lsh :: LshTable :: add (cvflann :: Matrix) ’:
/opt/ros/fuerte/include/opencv2/flann/lsh_table.h:196:14: ошибка: «use_speed_» не было объявлено в этой области
а также
pkg-config --cflags opencv
говорит
-I/opt/ros/fuerte/include/opencv -I/opt/ros/fuerte/include
Наконец-то это решено.
По ссылке http://answers.ros.org/question/61923/how-to-use-newer-versions-of-opencv-in-fuerte/
Я изменил и перешел в / opt / ros / fuerte / include и изменил имя opencv2 на opencv2bak. Таким образом, он находит правильное включает. Я не думаю, что это правильный способ сделать это, хотя.
Кроме того, зашел в /opt/ros/fuerte/share/OpenCV/OpenCVConfig.cmake и отредактировал переменную пути установки в / usr / local (где я установил)
Других решений пока нет …