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

安装第一个opencv:

首先编译安装,完成后设置环境变量

sudo gedit /etc/ld.so.conf.d/opencv.conf

添加下述内容:

# 这行命令的作用是使得系统找到opencv的config文件所在位置,编译的时候进行相关包的查找
/usr/local/lib  
#对配置的变量进行更新
sudo /bin/bash -c 'echo "/usr/local/lib" > /etc/ld.so.conf.d/opencv.conf'

sudo ldconfig
#在bashrc中添加参数信息
sudo gedit /etc/bash.bashrc
#在最后末尾添加
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig 
export PKG_CONFIG_PATH

即可完成opencv安装:

pkg-config --cflags opencv 输出编译时需要的头文件路径

pkg-config --libs opencv 输出编译时需要的库文件路径

pkg-config opencv --modversion  显示版本

安装第二个opencv:

前述默认安装在/usr/local下,新的系统编译安装在别的路径下:一般装在编译项目文件夹下的build文件夹下的installed文件夹里:

$ cd opencv-3.4.1
$ mkdir build
$ cd build
$ mkdir installed
$ cmake \
-DCMAKE_BUILD_TYPE=RELEASE \
-DCMAKE_INSTALL_PREFIX=~/opencv-3.4.1/build/installed \(此处设置安装位置)
\
-DWITH_CUDA=OFF \
\
-DBUILD_DOCS=OFF \
-DBUILD_EXAMPLES=OFF \
-DBUILD_TESTS=OFF \
-DBUILD_PERF_TESTS=OFF \ 
..
$ make -j4
$ sudo make install

多版本切换:

#打开~/.bashrc
gedit ~/.bashrc

#在文件末尾增加以下内容
export PKG_CONFIG_PATH=~/opencv-3.4.1/build/installed/lib/pkgconfig
export LD_LIBRARY_PATH=~/opencv-3.4.1/build/installed/lib

更新~/.bashrc
$ source ~/.bashrc 

#查询版本
$ pkg-config --modversion opencv

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

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

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

多opencv版本时使用命令:要指定config文件的路径

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博客https://blog.csdn.net/m0_46611008/article/details/124321527?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~Rate-1-124321527-blog-80288077.t5_landing_title_tags_v2&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2~default~CTRLIST~Rate-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 <opencv2/imgproc/imgproc_c.h>
  • 单独遇到CV_AA的报错时,也可以将 CV_AA 改为 cv::LINE_AA

问题四

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

解决方法

  • 3
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值