电子商务网站建设策划书 服装 有详细数据库设计,网址入口,建设工程指数网站,wordpress搭建影视站如果用ROS的topic传输图片#xff0c;需要用到cv_bridge#xff0c;这是个ros自带的opencv中的库#xff0c;如果此时项目中引用了自己安装的opencv#xff0c;自己安装的opencv会与ros自带的opencv中的cv_bridge冲突。编译时弹出warning: libopencv_imgproc.so.407, neede…如果用ROS的topic传输图片需要用到cv_bridge这是个ros自带的opencv中的库如果此时项目中引用了自己安装的opencv自己安装的opencv会与ros自带的opencv中的cv_bridge冲突。编译时弹出warning: libopencv_imgproc.so.407, needed by /usr/local/lib/libopencv_features2d.so.4.7.0, may conflict with libopencv_imgproc.so.4.2。运行后 cv::imshow报Segmentation fault这个错误。
解决方法1
修改/opt/ros/noetic/share/cv_bridge/cmake文件夹中的cv_bridgeConfig.cmakectrlf 搜索“set(libraries“ 会看到cv_bridge所需要的库这里面都是 .4.2.0的版本将发生冲突的库改为自己的版本比如我的是opencv4.8就改为 .4.8.0注意还有前面的路径一起改4.8.0版本的这些库/usr/local/lib中安装自己的opencv的时候安装到这里的。修改完后cv::imshow就不会报错了。
参考了这位博主的做法解决Ubuntu环境下ROS Kinetic中的cv_bridge和自己安装OpenCV 2.4.xx兼容性笔记_ros安装opencv-CSDN博客 解决方法二推荐
下载自己的ros对应版本的cv_bridgehttps://github.com/ros-perception/vision_opencv
修改cv_bridge中的cmakelists.txt
find_package(OpenCV 3.4.10 REQUIRED) //改成你安装的opencv的版本
cmake单独编译cv_bridge
mkdir build
cd build
cmake ..
make
sudo make install
在你需要用cv_bridge的项目中的CMakeLists.txt中添加
set(cv_bridge_DIR /usr/local/share/cv_bridge/cmake) //在find_package前面 这样就是引用了 引用你自己opencv的cv_bridge。
参考解决cv_bridge和opencv之间版本匹配问题 - 知乎