安装第一个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
解决方法
- 将报错文件上的 CV_FONT_HERSHEY_SIMPLEX 参数改为 cv::FONT_HERSHEY_SIMPLEX
- (88条消息) warning: libopencv_core.so.4.2, needed by /opt/ros/noetic/lib/libcv_bridge.so, may conflict with lib_羊羊羊o0的博客-CSDN博客
- (88条消息) ROS中catkin_make的OpenCV冲突的解决(踩坑小记,报错分析)_catkin_libraries_MendozaG的博客-CSDN博客