OpenCV3.3.1安装与OpenCV并存
按照如下提示安装
https://www.learnopencv.com/install-opencv3-on-ubuntu/
Ubuntu18.04就选择16.04方法来安装
会遇到的问题:
如果安装libgstream0.1出现问题,就看这里
在编译OpenCV时注意cmake命令有几处需要改动
如果在调用OpenCV时不需要cuda,最好编译时禁用cuda,在以下命令中加入-D WITH_CUDA=OFF
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D WITH_CUDA=OFF \
-D CMAKE_INSTALL_PREFIX=/usr/local \#默认安装路径,可以改为你自定义路径,例如/usr/local/opencv-3.3.1
-D INSTALL_C_EXAMPLES=ON \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D WITH_TBB=ON \
-D WITH_V4L=ON \
-D WITH_QT=ON \
-D WITH_OPENGL=ON \
-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib/modules \#opencv_contrib版本要和OpenCV版本一致,这一句命令指定了安装时抽取opencv_contrib组件的路径
-D BUILD_EXAMPLES=ON ..#有两个点,不要忘记
安装好opencv后,如果你使用你自己定义的安装路径,还需要两个修改
一、修改.bashrc文件
sudo gedit ~/.bashrc
在文件最后加上两句
##############change opencv version to 3.3.1
export PKG_CONFIG_PATH=/usr/local/opencv-3.3.1/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/opencv-3.3.1/lib
###########################
此时在终端输入pkg-config --modversion opencv
应该输出3.3.1
二、修改ld.so.conf文件
cd /etc
sudo gedit ld.so.conf
添加最后一句,注意应该添加你自定义安装的/usr/local下的opencv文件下的lib,而不是你进行编译的软件包里的build目录下的lib
include /etc/ld.so.conf.d/*.conf
#include /home/rislab/Downloads/Lib/OpenCV/opencv-3.4.11/build/lib 失败
#include /home/rislab/opencv-3.3.1/build/lib 失败
#add opencv-3.3.1 lib path
include /usr/local/opencv-3.3.1/lib
添加完成后重新开一个终端或者sudo ldconfig
如果上述修改不起作用,可能有两种原因
一是
如果你已经在修改前用make命令编译过软件包,可能导致修改不起作用,这时候删除软件包重新下载,再编译就成功了。
二是在/etc/ld.so.conf.d/下有一个opencv.conf文件,可能需要你加入opencv的lib,当我只以默认路径安装opencv331,不安装其他版本OpenCV时,情况如下
rislab@rislab-pc:/etc/ld.so.conf.d$ cat opencv.conf /usr/local/lib
- 使用编译
在编译过程中,由于安装了两个opencv版本报错。显示需要opencv的3.3内核,但是只找到3.4版本
https://www.cnblogs.com/scripthome/p/10351241.html
[ 87%] Building CXX object camera/CMakeFiles/img_publisher.dir/src/img_publisher.cpp.o
[100%] Linking CXX executable /home/rislab/catkin_ws/devel/lib/camera/img_publisher
/usr/bin/ld: warning: libopencv_core.so.3.3, needed by /usr/local/opencv-3.3.1/lib/libopencv_highgui.so.3.3.1, may conflict with libopencv_core.so.3.4
[100%] Built target img_publisher
我使用locate命令查找后发现,在/usr/local/lib文件夹下,确实只有3.4版本的库文件。
rislab@rislab-10700:/usr/bin$ locate libopencv_core
/home/rislab/Downloads/Lib/OpenCV/opencv-3.4.11/build/lib/libopencv_core.so
/home/rislab/Downloads/Lib/OpenCV/opencv-3.4.11/build/lib/libopencv_core.so.3.4
/home/rislab/Downloads/Lib/OpenCV/opencv-3.4.11/build/lib/libopencv_core.so.3.4.11
/home/rislab/opencv-3.3.1/build/lib/libopencv_core.so
/home/rislab/opencv-3.3.1/build/lib/libopencv_core.so.3.3
/home/rislab/opencv-3.3.1/build/lib/libopencv_core.so.3.3.1
/home/rislab/opencv-3.3.1/build/lib/libopencv_core_pch_dephelp.a
/usr/local/lib/libopencv_core.so
/usr/local/lib/libopencv_core.so.3.4
/usr/local/lib/libopencv_core.so.3.4.11
/usr/local/opencv-3.3.1/lib/libopencv_core.so
/usr/local/opencv-3.3.1/lib/libopencv_core.so.3.3
/usr/local/opencv-3.3.1/lib/libopencv_core.so.3.3.1
rislab@rislab-10700:/usr/bin$
使用软连接构建文件即可
比如ln -s 源文件 新文件
举例:
ln -s /usr/local/opencv-3.3.1/lib/libopencv_core.so.3.3 /usr/local/lib/libopencv_core.so.3.3
重现编译之后,问题解决