尽管在 ROS 中有其他版本的 OpenCV 版本,我如何引用独立的 OpenCV 安装

Posted

技术标签:

【中文标题】尽管在 ROS 中有其他版本的 OpenCV 版本,我如何引用独立的 OpenCV 安装【英文标题】:How can I reference a standalone OpenCV installation inspite of having other version of Opencv version in ROS 【发布时间】:2014-01-09 05:43:13 【问题描述】:

我的系统中有ROS,它带有opencv2.4.2。我还从 sourceforge.net 安装了 opencv,它是 samontab 博客之后的 opencv2.4.8。

现在我有一个源代码,它在运行时会自动选择 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)

但是它仍然使用了 ROS 自带的 Opencv 并且还会报这样的错误

             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

【问题讨论】:

【参考方案1】:

终于解决了。

来自链接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(我安装的位置)

【讨论】:

以上是关于尽管在 ROS 中有其他版本的 OpenCV 版本,我如何引用独立的 OpenCV 安装的主要内容,如果未能解决你的问题,请参考以下文章

ROS+opencv实践-二维码识别

转载:Ubuntu14.04与opencv2.4.8opencv3.0版本共存

OpenCV多版本管理

ros和opencv有啥区别

error:opencv有两个版本引起冲突

ROS2之OpenCV的微笑入门资料篇