尽管在 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 安装的主要内容,如果未能解决你的问题,请参考以下文章