目录
说明
1.换源
2.扩展储存空间和交换空间
3.下载相关工具包
4.编译OpenCV(多坑警告)
6.安装与验证
7.收尾
第一次接触在Linux上安装opencv,失败过几次,就用了pip安装方式,确实简单很多,但是为了深入的学习,还是决定使用源码编译一次,把安装成功的详细过程,方便自己和他人的参考,希望对你能有帮助。
如果你还不熟悉Linux的基本操作,最好了解一下 Linux命令行 和 vim 的使用基础,这里不再解释。
(1)这基本是学习Linux的常识吧,因为默认源是外国的网站,下载速度奇慢,我用的清华源,其他源也可以自己多尝试。
编辑 `/etc/apt/sources.list` 文件,删除原文件所有内容,用以下内容取代:
pi # sudo vim /etc/apt/sources.list
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib rpi
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib rpi
编辑 `/etc/apt/sources.list.d/raspi.list` 文件,删除原文件所有内容,用以下内容取代:
pi # sudo /etc/apt/sources.list.d/raspi.list
deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui
需要注意的是:
(2)更新软件
pi # sudo apt-get update
pi # sudo apt-get upgrade
需要注意的是:
(1)用SD卡安装完系统后一大部分空间实际是未被分配的,所以我们需要利用好全部的扩展空间。
pi # sudo raspi-config
然后进入一个软件工具界面,找到下图对应的选项,回车
然后系统会提示你重启,重启即可。这样就利用好了全部的内存卡储存空间。
(2)增加交换空间以避免因内存问题导致的编译挂起
pi # sudo vim /etc/dphys-swapfile
将 CONF_SWAPSIZE 值从默认值更改 100 为 1024 :
保存退出后,运行一下命令:
pi # sudo /etc/init.d/dphys-swapfile restart
(1)opencv强大不光是本身厉害,还需要各种相关库的支持。
pi # sudo apt install build-essential cmake git pkg-config libgtk-3-dev libcanberra-gtk*
pi # sudo apt install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev
pi # sudo apt install libjpeg-dev libpng-dev libtiff-dev gfortran openexr libatlas-base-dev opencl-headers
pi # sudo apt install python3-dev python3-numpy libtbb2 libtbb-dev libdc1394-22-dev
这里就会体现出换源后的速度优势。
(2)而opencv的源码因为只能在GitHub上下载,速度会很慢,这里提供了官方下载地址和一个4.4版本的网盘链接。
在用户目录下创建新的文件夹用来放置源码,源码可以克隆git上最新的,也可以去文末的网盘链接里找。
pi # mkdir ~/opencv_build && cd ~/opencv_build
pi # git clone https://github.com/opencv/opencv.git
pi # git clone https://github.com/opencv/opencv_contrib.git
链接:https://pan.baidu.com/s/100jhcxX0AwgK40iqduvEGw 提取码:fu3b
(3)此外,我们还需要一个用来构建源码编译的目录:
pi # mkdir -p ~/opencv_build/opencv/build
至此,我们的准备工作完成,如果你到这里运行的还算顺畅,那么接下来,可能会让你有一点头疼。
这是最耗时,也最容易出错的一部分,下面的操作可能与你在其他地方看到的不太一样,这是因为里面解决了一些我遇到的坑。
(1)做一个注释,排除anaconda对过程的影响。
pi # export PATH=~/anaconda3/bin:$PATH
(2)执行cmake
pi # cd ~/opencv_build/opencv/build
pi # cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_C_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D ENABLE_NEON=ON \
-D ENABLE_VFPV3=ON \
-D BUILD_TESTS=OFF \
-D OPENCV_ENABLE_NONFREE=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_build/opencv_contrib/modules \
-D BUILD_EXAMPLES=OFF \
-D WITH_OPENMP=ON ..
需要注意的是:
(3)当看到如下结果时,代表你成功了
...
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pi/opencv_build/opencv/build
(4)接下来是应该执行make了
pi # sudo make -j4
(5)注意:你可能会在编译过程中遇到报错,停止编译,这里千万不要慌张,往回翻错误类型,并百度你遇到的问题。
这里我放一个我遇到的问题(原谅我没有截图),大概率你也会遇到,提示缺少 某.i 文件。
下载文件地址:链接:https://pan.baidu.com/s/1cxESlWhS1l80iyaSX739Qw 提取码:unu3
把缺少的文件拷贝到:~/opencv_build/opencv_contrib//modules/xfeatures2d/src/
切换回 ~/opencv_build/opencv/build 输入 make 继续执行即可。
到这里你已经完成了99%的工作,和最难的部分。
安装
pi # sudo make install
时间很快,结果如下:
...
-- Installing: /usr/local/bin/opencv_version
-- Set runtime path of "/usr/local/bin/opencv_version" to "/usr/local/lib"
验证
pi # python
>import cv2
如果没有报错,那么恭喜你,你已经完成了。
大量交换使用可能会损坏您的 SD 卡。将交换空间更改回原始大小:
pi # sudo nano /etc/dphys-swapfile
将 CONF_SWAPSIZE 值改回 100
保存文件并激活更改:
pi # sudo /etc/init.d/dphys-swapfile restart
enjoy