由于在Raspbian上没有OpenCV的预安装包用apt也装不了,所以如果要在树莓上用OpenCV那只能蛋疼地去下载本地编译安装了。
本文是一个极其蛋疼的经历的记录,如果你没有什么耐性尝试那么请直接飘过。
我使用的是Raspberry PI 3+ ,首先要更换源,推荐使用(清华大学)[https://mirror.tuna.tsinghua.edu.cn/help/raspbian/]的,其它的源可能会由于cmake版本过低导致无办法编译。
打开/etc/apt/sources.list
文件修改源
pi@raspberrypi ~ $ sudo nano /etc/apt/sources.list
改使用以下的源:
deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main non-free contrib
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ stretch main non-free contrib
注:OpenCV for Python3的安装办法请参考:Raspbian Stretch: Install OpenCV 3 + Python on your Raspberry Pi 在编译过程中会出现一些C++的警告,直接无视。且不要安装到虚环境,因为其它的程序经常需要使用
sudo
一但安装到虚环境整个系统反而会变得不可用。所以不建议使用Python的虚环境。
更新系统安装包
首先更新系统包。
sudo apt-get update
sudo apt-get upgrade
#sudo rpi-update
#(can be skipped, but recommended) (don't do it if you will use the RPI cam as recommended by official RPI Website)
sudo reboot now
然后是下载各种依赖包,我将它们全部写到一起:
sudo apt-get purge wolfram-engine --assume-yes
sudo apt-get purge libreoffice* --assume-yes
sudo apt-get clean --assume-yes
sudo apt-get autoremove --assume-yes
sudo apt-get update && sudo apt-get upgrade --assume-yes
sudo apt-get install build-essential cmake pkg-config --assume-yes
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev --assume-yes
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev --assume-yes
sudo apt-get install libxvidcore-dev libx264-dev --assume-yes
sudo apt-get install libgtk2.0-dev libgtk-3-dev --assume-yes
sudo apt-get install libcanberra-gtk* --assume-yes
sudo apt-get install libatlas-base-dev gfortran --assume-yes
sudo apt-get install python2.7-dev python3-dev --assume-yes
以下是自动下载OpenCV
cd ~
wget -O opencv.zip https://github.com/opencv/opencv/archive/3.4.3.zip
unzip opencv.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/3.4.3.zip
unzip opencv_contrib.zip
修改数据交互区
将数据交互区增大,先打开dphys-swapfile文件:
sudo nano /etc/dphys-swapfile
然后将CONF_SWAPSIZE
改为:
CONF_SWAPSIZE=1024
执行以下指令重启服务:
$ sudo /etc/init.d/dphys-swapfile stop && sudo /etc/init.d/dphys-swapfile start
编译
安装依赖完成之后就可以进行编译配置。
cd ~/opencv-3.4.3/build
#mkdir build
#cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.4.3/modules \
-D ENABLE_NEON=ON \
-D ENABLE_VFPV3=ON \
-D WITH_GTK=ON \
-D BUILD_TESTS=OFF \
-D INSTALL_C_EXAMPLES=OFF \
-D INSTALL_PYTHON_EXAMPLES=OFF \
-D BUILD_EXAMPLES=OFF ..
配置完成后就可以开始编译了,执行以下脚本大约需要二小时左右,执行:
$ sudo make -j4
完成编译后直接安装
$ sudo make install && sudo ldconfig
自动装载摄像头驱动
安装完OpenCV2后是不会自动装载摄像头的,需要执行以下的指令才可以:
sudo modprobe bcm2835-v4l2
如果要在系统加载时载入可以在 /etc/modules
文件内加入这个驱动
sudo nano /etc/modules
加入:
bcm2835-v4l2
完成后记得将交互区大小改回100保存后重启。
重新进入 python 命令行,测试CV2是否安装成功:
import cv2
cv2.__version__