用于玫瑰玉的c++opencv设置
c++ opencv setup for ros Jade
我在ros answers论坛上发布了这个问题,但到目前为止还没有得到答案,所以这里是为了对冲我的赌注。
我已经成功地将eclipse设置为与ros一起使用。我已经成功地将eclipse设置为与opencv一起使用(作为一个带有所有链接器dohickeys的c++项目)
我还没有找到关于设置用于opencv的ros的全面文档。关于它的使用,有很多教程,但我不知道应该在manifest.xml和CMakeLists.txt中放入什么
简单地说:
和
find_package(需要OpenCV)
in manifest和CMakeLists分别不起作用,并且当我尝试使用rosmake命令构建它时,会给我一个可预测的错误消息:在pkg配置搜索路径中找不到Package opencv3。
我应该在这里做什么?
我们有一个靛蓝包,它使用image_transport订阅图像主题,将其转换为OpenCV类型,然后在内部直接使用OpenCV处理图像。该场景与使用CvBridge在ROS图像和OpenCV图像之间转换教程中的示例ROS节点几乎相同。
一旦在系统上安装了ros-indigo-opencv3,就会出现几个问题。我们花了一些时间才弄清楚,因为opencv3包是作为一个完全不同的项目的另一个包的依赖项安装的。
1-线路
find_package(OpenCV REQUIRED)
在中的cmake片段中http://wiki.ros.org/vision_opencv#Using_OpenCV_in_your_ROS_code从现在起,OpenCV 3总是安装在/opt/ros/dindigo中,这很糟糕。我们观察到了从编译错误、链接器错误到segfault的各种后果,尤其是与ros indigo cv桥相结合时,它与OpenCV 2.4.8的系统安装相关联。
2-解决方法是添加特定的版本要求,如
find_package(OpenCV 2.4.8 EXACT REQUIRED)
或者依赖cv_bridge或image_geometry间接链接到ROS靛蓝迁移指南中推荐的正确版本的opencv。
即使你可以以某种方式避免cmake在/opt/ros/dindigo中安装OpenCV 3,从现在起,无论何时发现,预处理器仍然更喜欢/opt/ros/include/occv2(由ros-indigo-opencv3安装)中的头文件,而不是/usr/include/occv2
#include <opencv2/core/core.hpp>
就像在cv_bridge.h:43中一样,因为有些依赖项总是会在include路径中添加/opt/ros/digo。
到目前为止,我找到的唯一解决方法是以下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标头在任何其他包的标头之前排序。
ROS玉的情况可能也是如此。
好吧,在我知道清单的实际情况之前,我不会将其设置为正确答案,但如果我去掉了opencv3依赖项(或opencv2,它们的行为都相同),一切都会很好。
说真的,有五年以上经验的人能告诉我这里发生了什么吗?
- Opencv 恢复到比我设置的更高的分辨率
- OpenCV 为键盘事件设置回调
- 如何使用cmake设置OpenCV以启用动态和静态构建
- 在OpenCV中设置像素值(奇怪的结果)
- 在Visual "Microsoft studio 2019"上设置OpenCV 4.1.1时遇到问题?(非法指令。
- Ubuntu上的OpenCv设置
- 如何使用opencv设置DMM 27UJ003-ML相机的曝光时间
- 用于玫瑰玉的c++opencv设置
- SimpleBlobDetection opencv C++设置参数出现符号问题
- 在Android上为OpenCV设置相机场景模式
- 使用原始数据OpenCV设置已分配的Mat
- eclipse中的OpenCV设置
- 使用 OpenCV 设置 QuickCam Pro 3000 的帧大小
- 如何知道为基于 Ubuntu 12.04 构建的 OpenCV 2.3.1 设置了哪些标志
- 访问Ximea相机并使用OpenCV设置预定义的分辨率时,由于相机默认分辨率的大小为Mat,因此显示混乱的输出
- OpenCV:设置图像边界,不带填充
- OpenCV:设置图像阈值并反转图像
- OpenCV设置轮廓为0
- Opencv设置图片尺寸
- 在c++中使用OpenCV设置一个给定中心像素值的矩形ROI