1、以root身份为整个系统安装opencv
下载依赖
首先下载opencv安装时所需的依赖,如果缺少某个依赖文件,编译过程并不会出错,但使用opencv函数的时候会提示错误,只能重新编译安装。
新建一个shell脚本,批量安装依赖文件,脚本命名为download.sh:
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
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libatlas-base-dev gfortran
sudo apt-get install ffmpeg
修改download.sh的权限:
sudo chmod 777 ./download.sh
执行脚本安装依赖文件:
./download.sh
注意:
如果你是在Ubuntu上的命令行安装,而且是使用windows查看的该博客,那么你将无法将上面的依赖文件内容复制到Ubuntu中,可能你会在windows中新建一个download.sh文件,修改好脚本文件的内容,再上传到linux服务器上执行,但是这样会导致sh文件运行时发生错误,报 bad interpreter: No such file or directory
错误。
这是因为,windows下对文本文件的保存格式与unix下是不同的,windows的回车字符是’/r/n’,而linux下是’/n’。
因此,你可以采取以下方式:
使用mobaxterm等软件,连接服务器,使用vim或mobaxterm自带的编辑器,进行脚本文件的编辑,不要使用windows的编辑器。
下载opencv和opencv_contrib的源码
opencv 4.2.0 的下载地址:https://github.com/opencv/opencv/archive/refs/tags/4.2.0.tar.gz opencv contrib 4.2.0 的下载地址:https://github.com/opencv/opencv_contrib/archive/refs/tags/4.2.0.tar.gz
需要其他版本的opencv直接去github下的releases/tags中下载对应的版本即可,链接如下:
opencv: https://github.com/opencv/opencv/releases
opencv_contrib: https://github.com/opencv/opencv_contrib/tags
安装opencv
直接解压刚刚下载的两个tar.gz文件,到特定的目录下即可:
tar -zxvf opencv-4.2.0.tar.gz
tar -zxvf opencv_contirb-4.2.0.tar.gz
解压后得到两个文件夹:opencv-4.2.0 和 opencv_contirb-4.2.0。
将解压后的opencv_contrib-4.2.0 文件夹整体移动到opencv-4.2.0目录下:
sudo cp -r opencv_contrib-4.2.0 opencv-4.2.0
在opencv-4.2.0下新建build文件夹,并进入:
cd opencv-4.2.0
sudo mkdir build
cd build
在build下新建一个shell脚本,执行build命令:
vim cmake_build.sh
脚本 cmake_build.sh 内容如下:
只需要将OPENCV_EXTRA_MODULES_PATH
中的your_path
,换成自己存放opencv的路径即可。
#!/bin/bash
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=/your_path/opencv-4.2.0/opencv_contrib-4.2.0/modules/ ..
修改权限并执行:
sudo chmod 777 ./cmake_build.sh
./cmake_build_sh
在build的过程中,会下载所需的文件,但因为网络原因,会导致一些资源连接超时,导致无法下载某些文件,会在命令行中提示,如果尝试多次build都无法成功下载,直接将命令行中提示缺少的文件,手动下载后拷贝到相应的路径即可。
如提示:boostdesc_binboost_256.i 下载超时,直接在百度上搜索资源,将该文件,下载到本地,并上传到 /your_path/opencv-4.2.0/opencv_contrib-4.2.0/modules/xfeatures2d/src/
路径下,即可。
在此推荐大家可以去我参考的这位大佬这,他把build中需要下载的文件,上传到了github中,大家可以直接去找到相应的文件进行下载,并顺便给大佬一个star。
编译OpenCv时经常缺少的.i文件
如果这上面也找不到,就直接百度上搜索,在将缺少的文件上传到对应位置后,可以再执行一遍 cmake_build.sh 脚本。
然后在build目录下使用make命令进行编译:
sudo make -j32
sudo make install
-j32 的意思是,让make最多允许32个编译命令同时执行,可以更有效的利用CPU资源。
使用以下命令可以查看linux系统CPU的信息,从而确定-j参数后面的数字,如果你的系统核心数足够多,就将该参数尽可能的设置大点,否则需要编译很长时间:
# 查看CPU信息
cat /proc/cpuinfo
# 查看物理CPU的个数
cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
# 查看逻辑CPU的个数
cat /proc/cpuinfo |grep "processor"|wc -l
# 查看CPU是几核的
cat /proc/cpuinfo |grep "cores"|uniq
安装完成后,使用vim新建或修改文件 opencv.conf
:
sudo vim/etc/ld.so.conf.d/opencv.conf
在文件末尾添加如下内容:
/usr/local/lib
然后执行命令,让配置生效:
sudo ldconfig
然后修改 bash/bashrc
文件:
sudo vim /etc/bash.bashrc
在文件末尾添加:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
保存文件后,执行下面的命令:
source /etc/bash.bashrc
sudo updatedb
至此opencv配置完成。
使用下面的命令,查看opencv的版本,验证是否安装成功。
pkg-config --modversion opencv4
2. 非root用户安装opencv
很多时候,我们在公用的服务器上,没有管理员权限,或者我们害怕把服务器搞坏了,就可以只在当前用户下,对该用户安装opencv。
下载依赖
与上面root方式安装opencv时下载依赖的方式相同,但是此处用到了apt-get命令,这个地方是需要用到root权限的。
如果你有管理员权限,可以使用管理员身份在服务器安装一些依赖包,然后在普通用户上安装opencv。
如果没有的话,可以先安装一下opencv试试,看有没有问题。
下载opencv的源码
opencv源码下载地址:https://opencv.org/releases/
依旧下载4.2.0版本:
安装
和上面一样,解压下载后的源码:
tar -zxvf opencv-4.2.0.tar.gz
在opencv-4.2.0目录下,创建build目录:
cd opencv-4.2.0
mkdir build
在build目录下,创建 cmake_build.sh
脚本文件:
cd build
vim cmake_build.sh
脚本的内容如下,只需要将 opencv安装路径CMAKE_INSTALL_PREFIX
和 opencv modules存放路径OPENCV_EXTRA_MODULES_PATH
中的 your_path
修改为自己存放opencv路径即可:
#!/bin/bash
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/your_path/opencv-4.2.0 -D WITH_TBB=ON -D WITH_V4L=ON -D BUILD_TIFF=ON -D BUILD_EXAMPLES=ON -D WITH_OPENGL=ON -D WITH_EIGEN=ON -D WITH_CUDA=OFF -D WITH_CUBLAS=ON -D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_EXTRA_MODULES_PATH=/your_path/opencv-4.2.0/opencv_contrib-4.2.0/modules/ ..
OPENCV_GENERATE_PKGCONFIG=ON
控制是否生成pkg_config,opencv4中如果不加这个命令,就不会生成pkgconfig,就会导致安装后找不到opencv文件。
编译之后,使用如下命令安装:
make -j32
make install
安装后,添加环境变量,在/home/your_username/.bashrc
中添加如下文字,将your_path换成自己存放opencv的路径:
export PKG_CONFIG_PATH=/your_path/opencv4.0.1/lib/pkgconfig
export LD_LIBRARY_PATH=/your_path/opencv4.0.1/lib
添加完成后:
source ~/.bashrc
验证是否安装成功,查看opencv的版本:
pkg-config --modversion opencv4