安装OpenCV3.3.0+python2.7 in 树莓派3Raspbian Stretch

本文详细介绍了在树莓派3 Raspbian Stretch系统上安装OpenCV 3.3.0的过程,包括扩展文件系统、安装依赖、配置OpenCV源代码、创建Python虚拟环境、编译安装、测试等关键步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍

hola,第一次写博,因为这段时间刚接触树莓派和docker,这几天又在被折磨于安装opencv,所以想记录和分享一下经验。
安装raspbian OS是根据官网的步骤:https://www.raspberrypi.org/downloads/raspbian/
安装opencv根据 Adrian Rosebrock在网络上发表的指导步骤进行:https://www.pyimagesearch.com/2017/09/04/raspbian-stretch-install-opencv-3-python-on-your-raspberry-pi/
感谢Mr Adrian的资料,相关网址提供给大家参考。

前言

在这份介绍里,我们所需要的准备就是拥有一个树莓派3,并且已经安装了它的系统raspbian stretch。如果你还没有下载这一系统,我建议你更新你的系统,因为以下的一些操作将仅适用于Rp stretch系统。你可以在这里下载我们所需要的系统:https://www.raspberrypi.org/downloads/raspbian/
以及查看升级系统的方式:https://www.raspberrypi.org/documentation/installation/installing-images/README.md

注意: 如果你想从Raspbian Jessie升级到Stretch,可能会存在一些无法预测的问题,所以不建议直接升级,最好的方法就是重新下载Stretch然后重新烧进新的SD卡中。

到这里你的操作系统已经准备完毕,你可以直接将树莓派接显示屏和键盘进行操作,或者使用ssh或VNC进行远程操作,我使用的是VNC。

安装

第一步:扩展文件系统

如果你在使用一个完全新的Raspbian Stretch,你要做的第一件事就是在你的SD卡中扩展文件系统:
$ sudo raspi-config
接着选择“Advanced Options”:
选择Advanced Options(图片来源:https://www.pyimagesearch.com/2017/09/04/raspbian-stretch-install-opencv-3-python-on-your-raspberry-pi/)
然后,选择“Expand File system”;最后选择退出该界面,这时Pi可能会自动重启,如果没有,使用以下指令:
$ sudo reboot
重启之后,你的文件系统已经被扩展,你可以通过指令$ df -h来查看:
df -h
从以上显示可以看出我在32G卡中,已经使用了一半。如果你用的是8GB的卡那么你需要近50%的可用空间,但是我还是就建议用16GB及以上的卡,因为我曾尝试使用8GB的卡,但是可用空间是一个很大的问题,在最后下载OpenCV的时候,大约下载到40%就被迫停止,因为空间不够,无法继续下载。
但是如果你仍希望使用8GB的SD卡,你可以删除LibreOffice和Wolfram引擎来释放Pi的空间:
$ sudo apt-get purge wolfram-engine
$ sudo apt-get purge libreoffice*
$ sudo apt-get clean
$ sudo apt-get autoremove

第二步:安装dependencies

原参考指导中,作者使用了大约4个小时完成以下所有过程;我用了大约8个小时完成最后的编译,所以根据网速情况,每个人安装的时候不等。

第一步,更新升级任何存在的包:
$ sudo apt-get update && sudo apt-get upgrade

接着我们需要安装一些开发工具,比如CMake,它可以帮助我们配置Opencv创建过程:
$ sudo apt-get install build-essential cmake pkg-config

下面我们需要安装图形I/O包,这些包可以让我们从磁盘上下载各种格式的图片文件:
$ sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev

除了图片I/O包,我们也需要视频的相关包,这些包可以让我们直接磁盘上查看视频并且直接对视频流进行操作:
$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
$ sudo apt-get install libxvidcore-dev libx264-dev

OpenCV目录有许多分模块,它们可以用来在我们的屏幕上显示图片并且创建基本的GUI:
$ sudo apt-get install libgtk2.0-dev libgtk-3-dev

另外,OpenCV还有许多其他的对我们未来使用有帮助的包,这些包在Pi的使用上非常重要:
$ sudo apt-get install libatlas-base-dev gfortran

最后,安装Python2.7和Python3:
$ sudo apt-get install python2.7-dev python3-dev

如果你使用的是最新下载的操作系统,那么系统中可能已经存在了最新版本的Python,你可以在指令框中查看。但是如果你跳过这一步,你会发现后面跑cmake语句时,会发生关于Python包的一些错误。

第三步:安装OpenCV源代码

到现在为止我们已经安装了所有需要的dependency,下面我们需要从OpenCV官方库中获取3.3.0版本的相关文档:
$ cd ~
$ wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.3.0.zip
$ unzip opencv.zip
$ wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.3.0.zip
$ unzip opencv_contrib.zip
你必须确保下载的opencv和opencv_contrib的版本一直,否则后面编译时会存在错误。

第四步:Python2.7或者Python3

在我们开始编译OpenCV之前我们需要先安装pip:
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python get-pip.py
$ sudo python3 get-pip.py

下面我们需要安装virtualenvvirtualenvwrapper
$ sudo pip install virtualenv virtualenvwrapper
$ sudo rm -rf ~/.cache/pip

安装完之后我们需要更新~/.profile文件,这里有多种方法来更新文件内容,这里是其中一种:
$ echo -e "\n# virtualenv and virtualenvwrapper" >> ~/.profile
$ echo "export WORKON_HOME=$HOME/.virtualenvs" >> ~/.profile
$ echo "export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3" >> ~/.profile
$ echo "source /usr/local/bin/virtualenvwrapper.sh" >> ~/.profile

更新完文件中的内容之后,我们需要让它能够生效,所以你可以退出登录然后在登入系统,或者重新打开一个指令框,或者最简便的方法,使用source指令:
$ source ~/.profile

创建你的Python虚拟环境

我们可以使用以下指令来创建你所需要的对应的虚拟环境:
$ mkvirtualenv cv -p python2
这条指令用来创建Python2.7 的虚拟cv环境;

以下是Python3的创建指令:
$ mkvirtualenv cv -p python3

这时你会发现你的界面会如图下所示:
inside cv
如果你想退出虚拟环境,重复使用 $ source ~/.profile 指令;重新进入虚拟环境则使用 workon cv 指令:
$ source ~/.profile
$ workon cv

退出虚拟环境后你将看不到cv显示。

安装NumPy

现在我们进入 cv虚拟环境,在此环境下我们开始安装NumPy:
$ pip install numpy

**注意:**从现在开始,所有安装都是在cv环境下进行!!!

第五步:编译并安装OpenCV

现在我们已经完成了所有的准备工作,可以开始编译安装OpenCV了,请在此确保你是在虚拟环境下,如果不是,通过workon cv进入环境:
$ workon cv

一旦你进入虚拟环境,就可以使用CMake来设置搭建:
$ cd ~/opencv-3.3.0/
$ mkdir build
$ cd build
$ cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D INSTALL_PYTHON_EXAMPLES=ON \ -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib-3.3.0/modules \ -D BUILD_EXAMPLES=ON ..

在我们进行最后一步时,一定要检查CMake的输出内容
找到关于python2和python3的输出内容,如果你想编译Python2.7的OpenCV,那么请确保Python2的所有相关路径无误:
python2

或者,如果你想编译Python3的OpenCV,请确保Python3的相关路径与以下图片中的类似:
python3

如果你没有得到相对应的输出,请重新进行以上步骤,注意:一定要在虚拟环境下进行,并且需要确保相关路径正确,否则后面的编译将会存在一些错误

编译之前更新你的交换空间大小

打开/etc/dphys-swapfile文件,然后找到CONF_SWAPSIZE变量:
# set size to absolute value, leaving empty (default) then uses computed value
# you most likely don't want this, unless you have an special disk situation
# CONF_SWAPSIZE=100
CONF_SWAPSIZE=1024

将100MB改成1024MB,如果你跳过这一步,后面编译可能存在失败
接着激活这一更改:
$ sudo /etc/init.d/dphys-swapfile stop
$ sudo /etc/init.d/dphys-swapfile start

最后,我们可以开始编译,编译时间4-9个小时不等:
$ make -j4

编译结束后你的界面会如下:
compile

完成编译后,我们可以开始安装OpenCV:
$ sudo make install
$ sudo ldconfig

第六步:完成安装

Python2.7
如果在第五步你没有任何错误,那么OpenCV已经在/usr/local/lib/python2.7/site-pacakges安装成功,你可以验证一下:
$ ls -l /usr/local/lib/python2.7/site-packages/ total 1852 -rw-r--r-- 1 root staff 1895772 Mar 20 20:00 cv2.so

如果你在site-pacakges中没有找到从cv2.so文件,它也有可能被安装在dist-packages中;
最后,我们将cv虚拟环境和OpenCV连接:
$ cd ~/.virtualenvs/cv/lib/python2.7/site-packages/
$ ln -s /usr/local/lib/python2.7/site-packages/cv2.so cv2.so

Python3
在安装之后,你的OpenCV已经安装在/usr/local/lib/python3.5/site-packages中,你可以验证:
$ ls -l /usr/local/lib/python3.5/site-packages/ total 1852 -rw-r--r-- 1 root staff 1895932 Mar 20 21:51 cv2.cpython-34m.so

这里并不知道为什么它的名称不是cv2.so,但是这不影响我们使用,当然你也可以将文件名改为cv2.so,以方便我们后面的使用:
$ cd /usr/local/lib/python3.5/site-packages/
$ sudo mv cv2.cpython-35m-arm-linux-gnueabihf.so cv2.so

在更改名称之后,我们可以将它与cv环境连接:
$ cd ~/.virtualenvs/cv/lib/python3.5/site-packages/
$ ln -s /usr/local/lib/python3.5/site-packages/cv2.so cv2.so

第七步:测试

恭喜大家,现在OpenCV已经完全安装成功!
但是在我们投入使用之前,我们需要验证一下它是否能够正常工作,打开一个新的指令框,然后进入cv虚拟环境查看当前python版本和OpenCV版本:
$ source ~/.profile
$ workon cv
$ python
>>> import cv2
>>> cv2.__version__
'3.3.0'
>>>
finally

正如所见,OpenCV安装成功。
你可以删除之前我们下载的opencv-3.3.0和opencv_contrib-3.3.0的安装包来释放一下空间:
$ rm -rf opencv-3.3.0 opencv_contrib-3.3.0

同时,别忘记将我们之前更改的交换空间大小改回原来数据:
# set size to absolute value, leaving empty (default) then uses computed value
# you most likely don't want this, unless you have an special disk situation
CONF_SWAPSIZE=100
# CONF_SWAPSIZE=1024

更改完后记得激活:
$ sudo /etc/init.d/dphys-swapfile stop
$ sudo /etc/init.d/dphys-swapfile start

到这里我们的安装就全部结束了,我第一次接触安装的时候,存在许多问题,重复安装了好多次,最后终于成功;所以在安装过程中可能会莫名存在一些或大或小的问题,欢迎大家在评论区讨论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值