假设此电脑已经安装了opencv4.0,现在需要安装opencv3,(其它版本同理)

下载OpenCV并构建库

为了避免冲突,在/usr/local/目录中新建opencv3

1
sudo mkdir -p /usr/local/opencv3

照常从opencv官网中下载另一版本的opencv,使用以下命令build

1
2
mkdir build
cd build
1
cmake -DCMAKE_BUILD_TYPE=RELEASE -DWITH_TBB=ON  -DWITH_V4L=ON -DCMAKE_INSTALL_PREFIX=/usr/local/opencv3 ..  

进入build文件夹后,你需要输入下面这种格式的cmake指令,需要根据你的实际情况,对下面的指令参数进行修改,不要复制过去就直接运行。

1
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3 -D OPENCV_EXTRA_MODULES_PATH=~/ros/sitepackages/opencv-3.4.2/opencv_contrib/modules/ -DPYTHON_INCLUDE_DIR=/usr/include/python2.7 -DPYTHON_LIBRARY=/usr/lib/x86_64-linux-gnu/libpython2.7 ..

编译安装

1
2
make -j4
sudo make install

切换opencv版本

打开~/.bashrc

1
gedit ~/.bashrc

在文件末尾增加以下内容

1
2
3
# Change OpenCV3
export PKG_CONFIG_PATH=/usr/local/opencv3/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/opencv3/lib

更新~/.bashrc

1
source ~/.bashrc 

查询OpenCV版本

1
pkg-config --modversion opencv

如果输出3.4.2,就表明配置成功。

如果想使用之前的版本,在~/.bashrc中注释掉增加的内容,然后source ~/.bashrc即可。

如果只有一个版本的OpenCV,在CMakeList.txt中使用以下语句即可。

1
FIND_PACKAGE(OpenCV REQUIRED)

在OpenCV编译好后,所在目录中会生成OpenCVConfig.cmake文件,这个文件中指定了CMake要去哪里找OpenCV,其.h文件在哪里等。

存在多版本OpenCV时,需要找到所需版本对应的OpenCVConfig.cmake文件,并将其路径添加到工程的CMakeLists.txt中。
示例如下:

1
2
3
4
5
6
set(OpenCV_INCLUDE_DIRS "/usr/local/opencv3/include")
set(OpenCV_LIB_DIR "/usr/local/opencv3/lib")
set(OpenCV_LIBS opencv_core opencv_highgui opencv_imgproc)
include_directories(${OpenCV_INCLUDE_DIRS})
link_directories(${OpenCV_LIB_DIR})
target_link_libraries(your_target_name ${OpenCV_LIBS})

参考文章

  1. 刘权祥. Ubuntu配置OpenCV及多版本OpenCV共存
  2. W_Tortoise. Ubuntu下多版本OpenCV共存和切换