如何将OpenCV 4与ROS链接(cv_桥)

如何将OpenCV 4与ROS链接(cv_桥),opencv,ros,opencv4,Opencv,Ros,Opencv4,我在ROS Melodic中使用OpenCV,现在我需要使用cv::dnn(深度神经网络),它包含在我安装的OpenCV 4中,并将其设置为我的CMakeLists.txt,如下所示: find_package(OpenCV 4 REQUIRED ) 这是我在ros工作区中执行命令时得到的警告:柳絮制作: /usr/bin/ld:警告:libopencv_imgcodecs.so.3.2,需要 /opt/ros/melodic/lib/libcv_bridge.so可能与 libopencv_

我在ROS Melodic中使用OpenCV,现在我需要使用cv::dnn(深度神经网络),它包含在我安装的OpenCV 4中,并将其设置为我的CMakeLists.txt,如下所示:

find_package(OpenCV 4 REQUIRED )
这是我在ros工作区中执行命令时得到的警告:柳絮制作

/usr/bin/ld:警告:libopencv_imgcodecs.so.3.2,需要 /opt/ros/melodic/lib/libcv_bridge.so可能与 libopencv_imgcodecs.so.4.1

我忽略了这一点,但我现在无法使用opencv运行任何节点

有人能帮助我如何在cv_bridge(ROS旋律系统)中设置OpenCV 4吗

提前谢谢。 顺致敬意,
Jovan。

ROS附带了一个opencv,用于图像相关的内容。某些ROS软件包,如cv_bridge、image_geometry等,默认情况下使用此opencv。这就是您出现分割错误的原因,因为不同的opencv版本以不同的格式存储图像


如果要在节点中使用自定义opencv,则必须将这些包包括在工作目录中,并对其进行编译。例如,您必须将其包含在节点的cmakelist中。

一个简单的解决方案是从下载合适版本的vision\u opencv。然后将内容(包含一些包
cv\u bridge
image\u geometry
opencv\u tests
vision\u opencv
)提取到catkin工作区中
src
文件夹中名为
vision\u opencv
的文件夹中


现在
catkin\u make
catkin build
您的工作区和必要的ros opencv包将编译并链接到本地
vision\u opencv
文件夹。在此之前,您可能需要清理您的工作区。

我理解,但您能解释一下如何做到这一点吗?在catkin workspace源文件夹中克隆cv_bridge,使用catkin_make编译时,请指定您自己的opencv目录:-DOpenCV_DIR=PATH_to_your_opencv。如下所示:catkin_make--cmake args-DOpenCV_DIR=PATH_TO_opencv然后当在ROS节点中包括cv_桥时(从节点的cmakelists.txt),指定编译后的cv_桥,这样它就不会使用默认的。但是你的节点如何获得图像输入呢?来自传感器?从另一个节点?从网络/文件系统?根据这一点,可能需要编译其他一些ros包。有一个完整的答案可以从ROS中删除所有opencv内容并在此处重新构建它们:,但我认为只需重新编译一些特定的包就足够了。我的节点通过cv_桥从另一个节点获取图像。如何在节点的CMakeLists.txt中指定我编译的cv_桥?另外,当我在工作区中使用catkin_make时,我应该使用哪个路径打开CV?当我使用cmake命令安装(构建)OpenCV4时,我使用了preffix cmake_INSTALL_PREFIX=/usr/local。