树莓派下安装OpenCV

安装OpenCV的方法有很多,今天给大家分享的是树莓派3在虚拟环境沙盒(virtualenv Virtualenvwrapper)中安装OpenCV3.3.1。

简单介绍一下为什么要用virtualenv Virtualenvwrapper?

        系统的多个python混用会导致 $PYTHONPATH 混乱,或者各个工程对于 package的版本要求不同等等情况。 
有一个简单的解决方案就是用virtualenv来隔离多个python,其本质只是实现隔离不同python中
$PYTHONPATH的路径,当然也可以衍生到隔离多个$PATH。 
         当有很多个虚拟环境时,我们可能会记不清有哪些虚拟环境,要搞清楚每个环境中有哪些package就更难了,因此这里推荐用Virtualenvwrapper来对虚拟环境进行管理。

本人树莓派安装运行的平台:Raspberry Pi 3 + Raspbian stretch + OpenCV 3 + Python3.5.3 
首先确保要有一张8G以上的内存卡,下载OpenCV的诸多文件需要占用很多的内存空间,因此需要扩展内存卡 

一、扩展文件系统

sudo raspi-config

选择第一个选项7. Advanced Options

 

回车键Enter,进入下个页面选中第一个选项Expand Filesystem,等待执行完毕。(结束按钮Finish)。

(注意:按上下键可在A1~A7之间移动。按左右键可在<Select><Finish>之间移动)

 

然后重启树莓(注意:上述执行完毕后,程序会提示是否要重启,选择“是”则自动重启;选择“否”则手动输以下命令重启。)

sudo reboot

重启后使用df -h命令查看SD卡的使用分配情况大致如下

二、准备编译环境 
更新升级装树莓派的安装库

 

sudo apt-get update
sudo apt-get upgrade

下载编译工具与git 

需要通过git来获取opencv的源码包,以及需要cmake来进行编译

sudo apt-get install build-essential git cmake pkg-config

接着,我们需要安装一些图像I/O包,使得我们可以加载多种格式的图片文件

sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev

安装视频IO包

sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev

sudo apt-get install libxvidcore-dev libx264-dev

OpenCv库的highgui模块需要依赖GTK开发库,安装GTK2.0:

sudo apt-get install libgtk2.0-dev

一些OpenCv的运算可以通过一些扩展包增强,安装opencv优化支持工具:

sudo apt-get install libatlas-base-dev gfortran

通过github下载opencv源码,并check 3.3.1版本

​
cd ~

git clone https://github.com/opencv/opencv.git

cd opencv

git checkout 3.3.1

​

通过github下载opencv的contrib库 contrib库中包括了面部识别和文本探测,还包括文本识别、边缘检测器、深度图处理、光线流和追踪算法等

​
cd ~

git clone GitHub - opencv/opencv_contrib: Repository for OpenCV's extra modules

cd opencv_contrib(注意opencv与contrib之间有一条下划线)

git checkout 3.3.1

​

安装python3的头文件

sudo apt-get install python3-dev

下载Python包管理工具pip

​
wget https://bootstrap.pypa.io/get-pip.py

​

三、创建python3.5.3沙盒环境

sudo python3 get-pip.py

安装virtualenv沙盒工具

sudo pip3 install virtualenv virtualenvwrapper

sudo rm -rf ~/.cache/pip

将沙盒环境变量写入~/.profile

sudo nano ~/.profile  

  #这句命令是用nano文本编辑器打开“~/.profile”文件。把下三句语句增添在此文件文末(##后面的中文除外),注意每句要换行。且只能通过上下左右键来控制光标的移动。

export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 #为了防止环境变量$PATH中已有其它环境的python

export WORKON_HOME=$HOME/.virtualenvs # 放所有虚拟环境的地方

source /usr/local/bin/virtualenvwrapper.sh #写入的环境变量,Wrapper在每次打开shell的时候自动运行 通过source命令使~/.profile生效

在文末追加完此三条语句之后,按ctrl+x退出文本编辑器;再输入“Y”确认保存改动;再按回车确认保存到原文件。即回到先前的命令行。

在命令行使用下述source 命令,让刚才编辑的文件生效。

source ~/.profile

提示:

也可以不将环境变量写入profile文件,但每次使用沙盒环境前,需要手动运行 
source /usr/local/bin/virtualenvwrapper.sh 
否则workon命令会提示找不到

创建沙盒环境

cd ~

mkvirtualenv p3cv

workon p3cv

提示:p3cv是创建的一个沙盒环境名,可以随意取名,但建议规范起名;若果创建沙盒成功,在当前行会出现(p3cv),使用deactivate命令退出虚拟环境,相应的沙盒命令见文章的最后面。

********以下操作都是在p3cv虚拟环境下进行 ********
安装NumPy包

pip3 install numpy

在沙盒环境下编译opencv 
创建build文件夹

cd ~/opencv

mkdir build

cd build

python3.5.3的编译命令:

cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D INSTALL_PYTHON_EXAMPLES=ON \
-D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
-D BUILD_EXAMPLES=ON ..
注意:输入“\”后再按回车,“\”前面必须有空格。之前输入的命令不会执行,而是可以继续输入下一行命令。
注意:最后ON之后有一个空格和两个点。

注意:INSTALL_C_EXAMPLES是创建C实例,如果开启,cmake会报错,初次编译可能会花费一点时间,请耐心等待;

四、编译OpenCv和安装OpenCV

在之前已经进入的build目录下输入以下命令编译OpenCv

make -j4

-j4参数是树莓派3有4核,这样可以加快编译速度。但在编译的时候树莓派会卡死机,编译比较漫长,大概需要个半小时左右,需要耐心的等待! 如果使用make -j4编译出错了,再次使用make -j4继续编译

注:如果make -j4一直出错并卡在同一处,请使用以下命令

1. make clean

2. make

进行编译,但时间会更长,大概需要4个小时。

 在build目录下进行OpenCV的安装

sudo make install

sudo ldconfig(第一个字母是小写的L)

安装最后通过以下命令查看OpenCv是否被安装到这个目录:(而且,此时此目录下有且仅有一个文件:cv2.cpython-35m-arm-linux-gnueabihf.so)

ls -l /usr/local/lib/python3.5/site-packages/

 

 

为沙盒环境引用类库(环境为Python3.5.3)

cd ~/.virtualenvs/p3cv/lib/python3.5/site-packages/

注意: 

本人在Python 3环境下编译出来的动态链接库的名字是cv2.cpython-35m-arm-linux-gnueabihf.so,而不是cv2.so若果不改变这个名字,最后在import cv2库时候会报 Import Error: No module named cv2的错误 错,在~/.profile文件中加入export LD_LIBRARY_PATH=/usr/lib/:$LD_LIBRARY_PATH ,看在使用cmake编译环境时是否有相应的Libraries库,没报错,不用加上,报错了则要加上。

 

 

不过我们可以通过重命名轻易的修改过来:(下面的命令12需要执行。命令2把原文件的名字改为cv2.so的目的是:在之后的命令中会使用到cv2.so这个名字)

1.	cd /usr/local/lib/python3.5/site-packages/
2.	sudo mv cv2.cpython-35m-arm-linux-gnueabihf.so cv2.so

最后一步是为p3cv虚拟环境建立一个OpenCv的链接

cd ~/.virtualenvs/p3cv/lib/python3.5/site-packages/ 
ln -s /usr/local/lib/python3.5/site-packages/cv2.so cv2.so

安装成功,验证是否安装正确

source ~/.profile

workon p3cv

python

import cv2

print(cv2.__version__) (注意:cv2后有一个点)

若成功显示版本号,则opencv安装成功

 

附录

常用的沙盒命令:

新建虚拟环境:mkmkvirtualenv * 
         PS:如果是第一次执行 mkmkvirtualenv * 会新建 ~/.virtualenvs/ 并导入一些文件,忽略即可,所以新建的虚拟环境目录就在此处。 
查询虚拟环境:lsvirtualenv 
删除虚拟环境:rmvirtualenv * 
切换虚拟环境:workon*** 
退出虚拟环境:deactivate

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凉风有诗意

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值