用到过两次了,每次都要重新找资料,在这里记录一下,下次用到就不用再找教程了。
前言
在开发不同工程时可能会需要不同版本的OpenCV,因此在电脑上安装多个版本的OpenCV很有必要。
多版本OpenCV共存
假设我们已经安装好一版OpenCV,一般都安装在/usr/local
下。
如果需要安装另一个版本的OpenCV,就不能再安装到/usr/local
,而是选择其他路径,否则会覆盖掉之前的版本。
下载opencv
首先去Releases - OpenCV下载所需版本的Sources版
我安装的第二个OpenCV版本为3.2.0。
安装依赖包
[compiler] sudo apt-get install build-essential
[required] sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
[optional] sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
使用cmake构建库
cd opencv-3.2.0
mkdir build
cd build
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 -j
sudo make install
1. 其中~/opencv-3.4.1/build/installed
为安装OpenCV3.4.1的路径,这个十分关键。
2. 设置OFF的理由如下,可大大加快编译速度,当然还要根据需求进行设置。
sudo make install ,这一步一定要运行,否则在自己设置的安装路径下则不会出现我们需要的编译文件夹。
添加到系统环境变量
修改~/.bashrc
:
#OpenCV_4.2.0
export PKG_CONFIG_PATH=~/opencv-3.2.0/build/installed/lib/pkgconfig
export LD_LIBRARY_PATH=~/opencv-3.2.0/build/installed/lib
更新~/.bashrc
source ~/.bashrc
查询OpenCV版本
pkg-config --modversion opencv
如果输出3.2.0
,就表明配置成功。
如果想使用之前的版本,在~/.bashrc
中注释掉增加的内容,然后source ~/.bashrc
即可。
应用:
如果只有一个版本的OpenCV,在CMakeList.txt中使用以下语句即可。
FIND_PACKAGE(OpenCV REQUIRED)
在OpenCV编译好后,所在目录中会生成OpenCVConfig.cmake文件,这个文件中指定了CMake要去哪里找OpenCV,其.h文件在哪里等。
存在多版本OpenCV时,需要找到所需版本对应的OpenCVConfig.cmake文件,并将其路径添加到工程的CMakeLists.txt中。
cmake_minimum_required(VERSION 2.8)
set(OpenCV_DIR /usr/local/opencv_3.2.0/share/OpenCV)
project(test)
find_package(OpenCV_DIR REQUIRED)
message("OpenCV version is : ${OpenCV_VERSION}")
在set的时候,一定要设置OpenCVConfig-version.cmake所在的位置
一定要设置OpenCVConfig-version.cmake所在的位置
一定要设置OpenCVConfig-version.cmake所在的位置
,我在网上找到的几个教程中,set的内容写的不是该文件的位置,虽然可以编译成功,但是在代码运行的时候,会出现错误,使用的opencv版本总是不是我想要的。
参考资料:
(1条消息) Ubuntu下多版本OpenCV共存和切换_W_Tortoise的博客-CSDN博客_ubuntu 多版本opencv