ubuntu 替换ros编译使用的opencv版本

- 以Ubuntu 18.04为例:ROS Melodic -> opencv-3.2.0 -> opencv-4.5.4

1、安装完opencv后,记住自己make install时opencv的安装路径

输入命令修改内容:

vim /opt/ros/melodic/share/cv_bridge/cmake +94

2、模范如下方法进行修改

# --------------------------------------------------------------------zhaocai
# if(NOT "include;/usr/include;/usr/include/opencv " STREQUAL " ")
if(NOT "include;/usr/local/opencv4/include/opencv4/opencv2 " STREQUAL " ")
# --------------------------------------------------------------------zhaocai
    set(cv_bridge_INCLUDE_DIRS "")
# --------------------------------------------------------------------zhaocai
#  set(_include_dirs "include;/usr/include;/usr/include/opencv")
   set(_include_dirs "include;/usr/local/opencv4/include/opencv4/opencv2")
# --------------------------------------------------------------------zhaocai
if(NOT "https://github.com/ros-perception/vision_opencv/issues " STREQUAL " ")
     set(_report "Check the issue tracker 'https://github.com/ros-perception/vision_opencv/issues' and consider creating a ticket if the problem has not been reported yet.")
   elseif(NOT "http://www.ros.org/wiki/cv_bridge " STREQUAL " ")
     set(_report "Check the website 'http://www.ros.org/wiki/cv_bridge' for information and consider reporting the problem.")
   else()
     set(_report "Report the problem to the maintainer 'Vincent Rabaud <vincent.rabaud@gmail.com>' and request to fix the problem.")
   endif()
   foreach(idir ${_include_dirs})
     if(IS_ABSOLUTE ${idir} AND IS_DIRECTORY ${idir})
       set(include ${idir})
     elseif("${idir} " STREQUAL "include ")
       get_filename_component(include "${cv_bridge_DIR}/../../../include" ABSOLUTE)
       if(NOT IS_DIRECTORY ${include})
         message(FATAL_ERROR "Project 'cv_bridge' specifies '${idir}' as an include dir, which is not found.  It does not exist in '${include}'.  ${_report}")
       endif()
     else()
       message(FATAL_ERROR "Project 'cv_bridge' specifies '${idir}' as an include dir, which is not found.  It does neither exist as an absolute directory nor in '\${prefix}/${idir}'.  ${_report}")
     endif()
     _list_append_unique(cv_bridge_INCLUDE_DIRS ${include})
   endforeach()
 endif()
 
# --------------------------------------------------------------------zhaocai
# set(libraries "cv_bridge;/usr/lib/x86_64-linux-gnu/libopencv_core.so.3.2.0;/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.3.2.0;/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.3.2.0")
 set(libraries "cv_bridge;/usr/local/opencv4/lib/libopencv_core.so.4.5.4;/usr/local/opencv4/lib/libopencv_imgproc.so.4.5.4;/usr/local/opencv4/lib/libopencv_imgcodecs.so.4.5.4")
# --------------------------------------------------------------------zhaocai
3、修改完成就可以重新编译了!

enjoy!

### 安装准备 为了确保 ROS 环境中的 OpenCV 库能够正常工作,在 Ubuntu 20.04安装前需确认已正确配置系统的 Python 版本以及 pip 工具。通常情况下,Ubuntu 20.04 默认自带 Python 3.x 和 pip3。 ### 下载并安装必要的依赖包 在开始之前,更新现有的软件包列表,并安装一些基础工具和库文件: ```bash sudo apt update && sudo apt upgrade -y sudo apt install build-essential cmake git pkg-config libgtk-3-dev \ libavcodec-dev libavformat-dev libswscale-dev python3-dev python3-numpy \ libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev \ ffmpeg libv4l-dev v4l-utils qv4l2 v4l2ucp libxvidcore-dev libx264-dev \ gstreamer1.0-tools gstreamer1.0-plugins-base-apps \ gstreamer1.0-libav gstreamer1.0-plugins-good gstreamer1.0-plugins-bad \ gstreamer1.0-plugins-ugly gstreamer1.0-alsa gstreamer1.0-pulseaudio \ python3-opencv ros-noetic-vision-opencv ros-noetic-image-common -y ``` 上述命令不仅包含了构建 OpenCV 所必需的各种开发库和支持多平台视频捕获的组件,还特别加入了 `ros-noetic-vision-opencv` 及其关联包来支持 ROS 的图像处理功能[^1]。 ### 编译安装自定义版本OpenCV (可选) 如果希望使用特定版本或带有额外模块的 OpenCV,则可以按照如下方式手动编译安装: #### 获取源码 访问官方 GitHub 仓库下载所需版本OpenCV 源代码: ```bash cd ~ git clone https://github.com/opencv/opencv.git cd opencv git checkout 4.5.5 # 或者其他想要的具体标签号 cd .. git clone https://github.com/opencv/opencv_contrib.git cd opencv_contrib git checkout 4.5.5 # 跟随主项目的分支保持一致 ``` #### 配置 CMake 构建选项 创建一个新的构建目录来进行外部分离式的构建过程: ```bash mkdir ~/opencv/build cd ~/opencv/build cmake -D CMAKE_BUILD_TYPE=Release \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \ -D BUILD_EXAMPLES=ON .. ``` 这里指定了 `/usr/local` 作为默认安装位置,并启用了来自 `opencv_contrib` 的附加模块支持[^2]。 #### 开始编译安装 启动实际的编译流程并将生成的结果部署至先前设定的目标路径内: ```bash make -j$(nproc) sudo make install echo "/usr/local/lib" | sudo tee --append /etc/ld.so.conf.d/opencv.conf sudo ldconfig ``` 这一步骤会将新编译好的共享库加入到动态链接器缓存中以便后续调用。 ### 整合 cv_bridge 到 Catkin Workspace 对于那些打算利用 ROS 提供的功能接口(如 `cv_bridge`)工作的开发者来说,建议直接从源码重新编译整个 workspace 来确保所有依赖关系都指向同一套 OpenCV 实现: ```bash cd ~/catkin_ws/src/ rm -rf vision_opencv git clone https://github.com/ros-perception/vision_opencv.git cd ../.. catkin_make clean catkin_make -DCMAKE_BUILD_TYPE=Release source devel/setup.bash roscd cv_bridge python3 setup.py develop ``` 完成以上步骤后应该已经成功集成了最新版的 OpenCV 至本地 ROS 系统之中[^3]。 ### 测试安装效果 最后可以通过运行简单的测试程序验证一切是否按预期运作良好: ```bash rosrun image_view stereo_view stereo:=camera __name:=stereo_view_left _approximate_sync:=True ``` 或者尝试控制乌龟模拟器的小海龟移动以检验整体环境设置无误[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JR_Sim

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值