ROS Ubuntu20.04多版本opencv运行及bug解决

ubuntu系统装有多个版本opencv使用方法及可能出现的问题:

单opencv版本时使用命令:find_package(OpenCV 3.2 REQUIRED)

其默认是在user/local/目录下安装的opencv版本

多opencv版本时使用命令:

set(OpenCV_DIR "/home/arrow/lib_z/opencv-3.2.0/build")

其中:/home/arrow/lib_z/opencv-3.2.0/build为自定义opencv安装目录
find_package(OpenCV 3.2 REQUIRED)

关于自定义安装目录,以及多版本opencv安装参考:

ubuntu中同时安装多个版本的opencv_gwpscut的博客-CSDN博客_ubuntu安装多个opencv

ROS系统catkin_make可能会出现的问题:

版本冲突问题:

libopencv_imgcodecs.so.3.2, needed by /opt/ros/melodic/lib/libcv_bridge.so, may conflict with libopencv_imgcodecs.so.4.2

由于ROS系统自带opencv,在链接库时候,会引入多版本的库文件(target_link_libraries(... ${catkin_LIBRARIES} ${OpenCV_LIBRARIES})  catkin_LIBRARIES包含一些opencv链接库

解决方法:

剔除不想要的版本即可:
以上面的报错为例子

file(GLOB_RECURSE OLD_OPENCV "/usr/lib/aarch64-linux-gnu/libopencv_imgcodecs.so.3.2")
list(REMOVE_ITEM catkin_LIBRARIES ${OLD_OPENCV})


(32条消息) ROS中catkin_make的OpenCV冲突的解决(踩坑小记,报错分析)_MendozaG的博客-CSDN博客icon-default.png?t=M85Bhttps://blog.csdn.net/m0_46611008/article/details/124321527?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-124321527-blog-80288077.t5_landing_title_tags_v2&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-124321527-blog-80288077.t5_landing_title_tags_v2&utm_relevant_index=1

其他vins-mono编译过程中可能会出现的问题:

cpp缺少头文件问题(CV_GRAY2RGB);因版本更新导致的命令不一致(CV_FONT_HERSHEY_SIMPLEX)

Vins-Fusion安装记录 - 知乎 (zhihu.com)

问题一

  • 编译时报错 error: ‘CV_GRAY2RGB’ was not declared in this scope 等

解决方法

  • 在报错文件上添加头文件 #include
  • 单独遇到CV_AA的报错时,也可以将 CV_AA 改为 cv::LINE_AA

问题四

  • 编译时遇到报错 error: ‘CV_FONT_HERSHEY_SIMPLEX’ was not declared in this scope

解决方法

  • 将报错文件上的 CV_FONT_HERSHEY_SIMPLEX 参数改为 cv::FONT_HERSHEY_SIMPLEX

你可能感兴趣的:(linux,c++,开发语言)