gpt4 book ai didi

ros Jade 的 c++ opencv 设置

转载 作者:行者123 更新时间:2023-11-28 05:40:42 24 4
gpt4 key购买 nike

我在 ros answers 论坛上发布了这个问题,但到目前为止还没有得到答案,所以这是对冲我的赌注。

我已经成功地设置了用于 ros 的 eclipse。我已经成功地将 eclipse 设置为与 opencv 一起使用(作为一个带有所有链接器 dohickeys 的 c++ 项目。)

我还没有找到关于设置 ros 以与 opencv 一起使用的综合文档。有很多关于它的使用的教程,但我不知道我应该将什么放入 manifest.xml 和 CMakeLists.txt。

简单来说:

查找包(需要 OpenCV)

在 manifest 和 CMakeLists 中分别不起作用,并且当我尝试使用 rosmake 命令构建它时给我一个可预测的错误消息:在 pkg-config 搜索路径中找不到包 opencv3。

我应该在这里做什么?

最佳答案

我们有一个使用 image_transport 订阅图像主题的 indigo 包,将其转换为 OpenCV 类型,然后在内部直接使用 OpenCV 处理图像。该场景与 Using CvBridge To Convert Between ROS Images And OpenCV Images 的示例 ROS 节点中的场景几乎相同。教程。

系统一安装ros-indigo-opencv3就出现几个问题。我们花了一些时间才弄清楚这一点,因为 opencv3 包是作为另一个包的依赖项安装的,用于一个完全不同的项目。

1 - 线

find_package(OpenCV REQUIRED)

http://wiki.ros.org/vision_opencv#Using_OpenCV_in_your_ROS_code 的 cmake 片段中从现在开始总是在/opt/ros/indigo 中找到 OpenCV 3 安装,这很糟糕。我们观察到各种后果,从编译错误、链接器错误到段错误,尤其是与 ros-indigo-cv-bridge 结合使用时,它与 OpenCV 2.4.8 的系统安装相关联。

2 - 解决方法是添加特定版本要求,例如

find_package(OpenCV 2.4.8 EXACT REQUIRED)

或者按照 ROS indigo migration guide 中的建议,依赖 cv_bridge 或 image_geometry 间接链接到正确版本的 opencv .

即使你能以某种方式避免 cmake 在/opt/ros/indigo 中选择 OpenCV 3 安装,预处理器仍然会喜欢在/opt/ros/include/opencv2 中找到的 header (由 ros-indigo-opencv3 安装) 从现在开始在/usr/include/opencv2 上找到一个

#include <opencv2/core/core.hpp>

喜欢cv_bridge.h:43 ,因为某些依赖项总是会将/opt/ros/indigo 添加到包含路径。

到目前为止我发现的唯一解决方法是以下 cmake 片段:

find_package(OpenCV 2.4.8 EXACT REQUIRED)
include_directories(
include
${OpenCV_INCLUDE_DIRS} # /usr/include/opencv;/usr/include
${catkin_INCLUDE_DIRS} # contains /opt/ros/indigo/include
# ...other include directories
)

确保/usr/include 中的 OpenCV 2.4.8 header 在任何其他包的 header 之前排序。

大概情况在ROS jade中也是一样。

关于ros Jade 的 c++ opencv 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37153871/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com