系统相关信息
ubuntu 18
ROS:ROS melodic
由于ros自带的openCV版本为3.2.0,编译ORB-SALM要求openCV版本大于3.3.,因此,再安装openCV3.4.10和openCV 4.5.4,原有的ROS安装的opencv不卸载,直接再安装opencv3.4.10和4.5.4版本,安装教程参见以下链接。
安装可能遇到的问题参见这三个博客,基本上都覆盖了。
特别需要说明的是,多版本安装时,cmake 指令设置时必须设置准备安装的文件位置。
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3.4.10 -D OPENCV_EXTRA_MODULES_PATH=/home/xiujie/Downloads/opencv-3.4.10/opencv_contrib-3.4.10/modules/ -D OPENCV_GENERATE_PKGCONFIG=YES -D OPENCV_ENABLE_NONFREE=True -D BUILD_opencv_cudacodec=OFF ..
其中参数 -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3.4.10
后面的路径设置为自己预期的安装路径,此处务必修改,因为如果不设置,就会安装到默认文件夹下,当换版本安装时,就会覆盖掉前面安装的opencv。另外,opencv4以上默认不再生成pkgconfig
文件,因此设置指令为 -D OPENCV_GENERATE_PKGCONFIG=YES
,不然就得后续自己手动添加,具体可以搜索。
环境配置
环境配置这步可以直接修改~/.bashrc文件(我的bashrc文件是这个路径,具体根据自己的设置)。在这个链接ubuntu20安装opencv4和opencv_contrib 多版本共存中需要创建并修改文件sudo vim /etc/ld.so.conf.d/opencv.conf
,实际测试不用修改这个文件,直接修改~/.bashrc
文件即可。
使用vim编辑:
vim ~/.bashrc
在文件的末尾添加,以opencv3.4.10为例:
export PKG_CONFIG_PATH=${PKG_CONFIG_PATH}:/data/caoxiujie/packages/opencv3.4.10/lib/pkgconfig/
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/data/caoxiujie/packages/opencv3.4.10/lib/
具体的路径为自己设置安装的路径。安装完opencv4.5.4后同样修改并添加上述两行,注意修改地址。
当修改完成后,执行指令
source ~/.bashrc
如果调用的是opencv3.4.10,版本查看指令为
pkg-config --modversion opencv
如果想调用opencv4.5.4版本,就将opencv3.4.10的两行代码注释掉,然后再执行source ~/.bashrc
,执行后使用指令查看:
pkg-config --modversion opencv4
如果想调用ROS自带的opencv3.2.0版本,就将opencv3.4.10和opencv4.5.4的信息全部注释掉,然后新开终端,输入指令
pkg-config --modversion opencv
界面显示如下:
至此就可以完成多版本切换,但是一次只能使用一个版本,但是需要注意,如果修改了系统默认的opencv版本后,再使用ROS调用opencv库时会发生错误,此时建议修改cv_bridge文件,可用的参考链接为:
1.Ubuntu18.04 + ROS 终端在 /usr/local 路径下安装opencv4.1.1
2. Ubuntu环境下ROS安装自己OPENCV版本