离线编译安装opencv库及多版本切换[ubuntu]

系统版本:ubuntu18.04

库版本:opencv4.6.0 & opencv3.6.0

一、多版本安装前准备

1. 卸载已经安装的opencv版本[可选]

 1.1 卸载从软件仓库中安装的opencv

sudo apt-get purge libopencv* 

1.2 卸载使用source自行编译安装的opencv

首先进入原先编译opencv的build目录,在该目录下打开终端;再执行以下代码。(注意如果build已经删除了,可以重新编译一遍该版本的opencv,然后在最后一步执行sudo make uninstall

sudo make uninstall
cd ..
sudo rm -r build
sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/share/OpenCV /usr/share/opencv /usr/share/OpenCV /usr/local/bin/opencv* /usr/local/lib/libopencv*

以上可能有error,可忽略,最后执行如下操作: 

sudo apt-get --purge remove opencv-doc opencv-data python-opencv

二、安装opencv3.4.15

2.1 下载opencv3.4.15:

链接1: GitHub - opencv/opencv_contrib at 3.4.15

链接2:Releases - OpenCV 

2.2 下载opencv_contrib

注意:这里要与上面下载的opencv版本一致

 链接:

GitHub - opencv/opencv_contrib at 3.4.15

 2.3 编译源码

2.3.1  下载好后,将opencv_contrib放到解压后opencv文件夹里面

2.3.2 安装依赖项

  sudo apt-get update
  sudo apt-get upgrade
  sudo apt-get install build-essential
  sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
  sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

2.3.3 cmake编译

2.3.3.1 在该文件夹opencv-3.4.15下打开终端

后续步骤参见下文3.3.3节

三、安装opencv4.6.0

3.1 下载opencv4.6.0

链接1:GitHub - opencv/opencv at 4.6.0

链接2:Releases - OpenCV

3.2 下载opencv_contrib

注意:这里要与上面下载的opencv版本一致

链接:https://github.com/opencv/opencv_contrib/tree/4.6.0 

3.3 编译源码

离线编译安装opencv库及多版本切换[ubuntu]_第1张图片

3.3.1 两个都下载好以后,把opencv_  opencv_contrib放到解压后opencv文件夹里面

3.3.2 安装依赖

  sudo apt-get update
  sudo apt-get upgrade
  sudo apt-get install build-essential
  sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
  sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

3.3.3 cmake编译

3.3.3.1 在该文件夹opencv-4.6.0下打开终端

 mkdir build && cd build

(1) 不编译opencv_contrib、cuda

注意:CMAKE_INSTALL_PREFIX=/usr/local/opencv-4.6.0

cmake -D CMAKE_INSTALL_PREFIX=/usr/local/opencv-4.6.0 -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_ENABLE_NONFREE=True ..

注解:
1. CMAKE_INSTALL_PREFIX 是opencv的安装地址 默认安装在 usr/local
2. CMAKE_BUILD_TYPE 是opencv安装的版本,Release和Debug两种可选,默认安装Release
3. OPENCV_ENABLE_NONFREE 是否使用部分被申请了专利的算方法 这里选True的话就可以使用了
4. OPENCV_GENERATE_PKGCONFIG 强烈建议开启这个 设置为ON OPENCV_GENERATE_PKGCONFIG 因为opencv4默认不生成.pc文件,所以加上这句用于生成opencv4.pc文件,支持pkg-config功能。opencv4版本及以上 这里用ON. 

(2) 编译opencv_contrib,不编译cuda

注意:CMAKE_INSTALL_PREFIX=/usr/local/opencv-4.6.0

OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.6.0/modules 

cmake -D CMAKE_BUILD_TYPE=RELEASE \
	-D CMAKE_INSTALL_PREFIX=/usr/local/opencv-4.6.0 \
	-D INSTALL_PYTHON_EXAMPLES=ON \
	-D INSTALL_C_EXAMPLES=OFF \
    -D OPENCV_GENERATE_PKGCONFIG=ON \
	-D OPENCV_ENABLE_NONFREE=ON \
	-D OPENCV_DNN_CUDA=ON \
	-D ENABLE_FAST_MATH=1 \
	-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.6.0/modules \
	-D HAVE_opencv_python3=ON \
	-D PYTHON_EXECUTABLE=usr/bin/python3 \
	-D BUILD_EXAMPLES=ON ..


cmake -DCMAKE_BUILD_TYPE=RELEASE -DOPENCV_EXTRA_MODULES_PATH= ../opencv_contrib-4.6.0/modules -DCMAKE_INSTALL_PREFIX=/usr/local/opencv-4.6.0 -DWITH_CUDA=OFF -DBUILD_EXAMPLES=ON -DBUILD_DOCS=OFF -DBUILD_PERF_TESTS=OFF -DBUILD_TESTS=OFF -DOPENCV_GENERATE_PKGCONFIG=YES -DOPENCV_ENABLE_NONFREE=True -DBUILD_opencv_world=OFF ..
 

可能出现的错误:

ippicv_2020_win_intel64_20191018_general.zip等文件下载失败的解决办法,找了好久,还是这位老哥的方法解决了问题-CSDN博客

(3) 编译opencv_contrib、cuda

cmake -D CMAKE_BUILD_TYPE=RELEASE \
	-D CMAKE_INSTALL_PREFIX=/usr/local/opencv-4.6.0 \
	-D INSTALL_PYTHON_EXAMPLES=ON \
	-D INSTALL_C_EXAMPLES=OFF \
    -D OPENCV_GENERATE_PKGCONFIG=ON \
	-D OPENCV_ENABLE_NONFREE=ON \
	-D WITH_CUDA=ON \
	-D WITH_CUDNN=ON \
	-D OPENCV_DNN_CUDA=ON \
	-D ENABLE_FAST_MATH=1 \
	-D CUDA_FAST_MATH=1 \
	-D CUDA_ARCH_BIN=7.5 \
	-D WITH_CUBLAS=1 \
	-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.6.0/modules \
	-D HAVE_opencv_python3=ON \
	-D PYTHON_EXECUTABLE=usr/bin/python3 \
	-D BUILD_EXAMPLES=ON ..

从上,WITH_CUDA和WITH_CUDNN项指的是用CUDA和cuDNN。OPENCV_DNN_CUDA项表示我们要编译后的dnn模块支持CUDA。ENABLE_FAST_MATH, CUDA_FAST_MATH和WITH_CUBLAS项是为了优化运算而开启的。

 3.3.3.2 cmake结束后make

注:终端输入nproc 命令可以查看自己电脑有多少线程。我的电脑有8个。

sudo make -j8

3.3.3.3 安装指令

sudo make install

3.3.3.4 配置环境

sudo gedit /etc/ld.so.conf.d/opencv.conf

新增 /usr/local/opencv-4.6.0/lib

保存后终端输入

sudo ldconfig

更新共享链接库

sudo gedit /etc/bash.bashrc

在文末新增:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv-4.6.0/lib/pkgconfig
export PKG_CONFIG_PATH

保存后退出,终端输入以下命令使配置生效

source /etc/bash.bashrc

更新一下

sudo updatedb

查看是否安装成功,成功则会输出版本号 

pkg-config --modversion opencv

四、配置菜单选项

打开终端,输入以下指令

sudo update-alternatives --install /usr/local/opencv opencv /usr/local/opencv-3.4.15/ 3415
sudo update-alternatives --install /usr/local/opencv opencv /usr/local/opencv-4.6.0/ 4600 

切换指令

sudo update-alternatives --config opencv

离线编译安装opencv库及多版本切换[ubuntu]_第2张图片 

你可能感兴趣的:(ubuntu,linux,运维)