OpenCV 版本与 cv_bridge 冲突

问题描述 投票:0回答:1

注意:我使用的是配备 Ubuntu 20.04 和 ROS 1 的 Nvidia Jetson。

使用

cv_bridge
安装
sudo apt install ros-noetic-cv-bridge
后,我在构建项目时不断收到以下警告:

...

-- +++ processing catkin package: 'csi_camera'
-- ==> add_subdirectory(csi_camera)
-- Found OpenCV: /usr (found version "4.5.4") 
-- Installing devel-space wrapper /.../csi_cam.py to /.../csi_camera
-- +++ processing catkin package: 'vio'
-- ==> add_subdirectory(vio)
-- Found OpenCV: /usr (found version "4.5.4") found components: core highgui imgproc imgcodecs 
-- Configuring done
-- Generating done

...

/usr/bin/ld: warning: libopencv_imgcodecs.so.4.2, needed by /opt/ros/noetic/lib/libcv_bridge.so, may conflict with libopencv_imgcodecs.so.4.5
/usr/bin/ld: warning: libopencv_imgproc.so.4.5, needed by /usr/lib/aarch64-linux-gnu/libopencv_imgcodecs.so.4.5.4, may conflict with libopencv_imgproc.so.4.2

这似乎不是一个大问题,直到我不得不在代码中使用

cv::circle
。现在这条线会导致
segmentation fault
(我检查了我的图像是否有效,等等)。

cv::circle(image, cv::Point(100, 100), 2, CV_RGB(255, 0, 0));

我尝试删除两个版本的 OpenCV,但是

cv_bridge
需要 4.2 的某些部分,而 CMake 只能找到 OpenCV 4.5.4(这是
libopencv-dev
安装的版本)。我真的不知道如何解决这个问题!

c++ opencv ros
1个回答
0
投票

我有类似的问题,即

/usr/bin/ld:警告:/opt/ros/noetic/lib/libcv_bridge.so 需要的 libopencv_imgcodecs.so.4.2,可能与 libopencv_imgcodecs.so.408 冲突

/usr/bin/ld:警告:/usr/local/lib/libopencv_imgcodecs.so.4.8.0 需要的 libopencv_imgproc.so.408,可能与 libopencv_imgproc.so.4.2 冲突

/usr/bin/ld:警告:/usr/local/lib/libopencv_imgcodecs.so.4.8.0 需要的 libopencv_core.so.408,可能与 libopencv_core.so.4.2 冲突

所以我卸载了:

sudo apt 删除 libopencv-dev python3-opencv sudo apt purge libopencv-dev python3-opencv

这也将删除 cv_bridge。 然后你必须使用以下命令从源代码构建它:

git clone -b noetic https://github.com/ros-perception/vision_opencv.git

和catkin_make。通常,包的 CMakelist.txt 格式良好,应该在 /usr/lib 中找到您的 opencv 版本。如果您还有其他问题,可以参考此

希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.