2019-01-12 by 崔斐然
2019-04-08补充:
因为此篇文章是将opencv配置在虚拟环境中,若要开机自启动进入虚拟环境请进行如下配置:开机脚本
#!/bin/bash
source /home/pi/.profile
workon cv
内容参考自: Adrian Rosebrock的博客:https://www.pyimagesearch.com/2016/05/16/running-a-python-opencv-script-on-reboot/
2019-02-27补充:
鉴于OpenCV安装过程可能花费大量时间,建议使用ssh操作的同学安装screen管理会话,避免因网络波动造成ssh掉线任务失败。参考我的另一篇博文: [树莓派安装screen保证SSH断开 任务不中断]
2019-02-28补充:4.4、创建虚拟环境 之前应该先使环境变量生效:source ~/.profile
上一篇做好了树莓派系统的安装和基本配置,现在开始安装opencv,疯狂找教程:
现在正在看这个教程:https://www.pyimagesearch.com/opencv-tutorials-resources-guides/
从中可以找到:
Raspbian Stretch:在Raspberry Pi上安装OpenCV 3 + Python
https://www.pyimagesearch.com/2017/09/04/raspbian-stretch-install-opencv-3-python-on-your-raspberry-pi/
其中,需要注意的是:(踩坑)
1、安装numpy时候应该装在cv环境里(虚拟环境作为独立空间隔离包)
2、似乎每次进虚拟环境前都要先指定source ~/.profile?不清楚,求指点(更新:下面增加了开机启动的办法)
3、make时候还是稳一点吧~ 4作业可能导致系统崩溃。详见:https://bbs.csdn.net/topics/380072770
先祭出安装成功的截图吧
文字版过程参考:https://www.pyimagesearch.com/2017/09/04/raspbian-stretch-install-opencv-3-python-on-your-raspberry-pi/(超级详细。只是有几点需要说明~见如下视频或我的笔记)
视频版教程参考:https://www.youtube.com/watch?v=j6RD3X94rEA(需要外网)
参考上一篇《基于机器学习的捡球机器人设计与实现(探索)第1篇》
1、更新系统:
sudo apt-get update && sudo apt-get upgrade
2、安装依赖:(一条一条执行)预计6-7分钟
# 安装开发人员工具:
sudo apt-get install -y build-essential cmake pkg-config
# 接下来, 让我们安装一些图像和视频 ito 库。
sudo apt-get install -y libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
sudo apt-get install -y libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install -y libxvidcore-dev libx264-dev
#从这里, 让我们为我们的 GUI 后端安装 GTK:
sudo apt-get install -y libgtk2.0-dev libgtk-3-dev
#接下来安装两个包含 OpenCV 数学优化的软件包:
sudo apt-get install -y libatlas-base-dev gfortran
#最后, 让我们安装 Python 3 开发标头:
sudo apt-get install -y python2.7-dev python3-dev
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
1、安装Python包管理器:
wget https://bootstrap.pypa.io/get-pip.py
sudo python get-pip.py
sudo python3 get-pip.py
2、安装虚拟环境(Python虚拟环境的好处自己百度)
sudo pip install virtualenv virtualenvwrapper
sudo rm -rf ~/.cache/pip
3、当安装完虚拟环境后更新配置文件
在~/.profile的底部添加如下代码
办法1:命令:sudo nano ~/.profile
# virtualenv and virtualenvwrapper
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
command+c上面的内容,然后sudo nano ~/.profile 光标移动最底部,command+v ,然后按住Ctrl+x 退出,保存?y 。搞定
办法2:也可以使用cat EOF追加的办法添加代码
cat >> ~/.profile << EOF
# virtualenv and virtualenvwrapper
export WORKON_HOME=\$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
EOF
使环境变量生效:
source ~/.profile
4、创建虚拟环境:
mkvirtualenv cv -p python3
5、进入虚拟环境:
6、在虚拟环境cv中安装Numpy : (历时10多分钟)
pip install numpy
确保处于cv虚拟环境中,不是的话参考第4.5步骤
直接编译会报错,原因在于官网所给链接失效,导致tiny_dnn无法正常下载。
2019-05-06更新:手动下载dnn:
链接:https://pan.baidu.com/s/1BGnzJrq0WX7vMo1CCyc_rA 密码:3odo
放置于\Opencv3.3\sources\.cache\tiny_dnn目录下(需要显示隐藏文件)
1、使用cmake设置build
(直接复制下面的代码会带上我的版权,建议先复制到word里,删掉版权再粘贴)
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 ..
2、检查设置结果的路径是否正确
选择Python2.7的如下:一定要核对无误,不然剩下的白做。
选择Python3的显示如下:一定要核对无误,不然剩下的白做。(已踩坑)
如果不对的话核查上述步骤,删掉build重新设置:
cd opencv3.3.0
rm -rf build
3、在编译之前配置交换空间大小(这一步应该不用退出虚拟环境。。)
sudo nano /etc/dphys-swapfile
进去后把CONF_SWAPSIZE=100改为CONF_SWAPSIZE=1024 (可能会烧毁内存卡,不过无所谓啦)
4、然后如下命令重启一下交换空间
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start
5、最重要一步,编译:(请务必确保处于cv虚拟环境中)且在~/opencv-3.3.0/build目录下
make -j2
教程里用的4进程编译,结果是速度很快但容易崩溃重启,还会大量发热,不如用双进程稳定些。
等待两个半小时。去玩会儿吧~
等待完成后别报错啥的,开始安装OpenCV
此时还是在opencv/build目录下吧?不是的话进来。(记得这一步退出cv虚拟环境)
然后
cd ~/opencv-3.3.0/build
sudo make install
sudo ldconfig
无论在不在虚拟环境都可以。
1、检查Python3.5的site-package目录有没有安装上OpenCV
ls -l /usr/local/lib/python3.5/site-packages/
total显示目录大小别为太小就是可以了(我应改是装了2次,正常大概3000-4000之间吧)
2、创建软连接
cd /usr/local/lib/python3.5/site-packages/
sudo mv cv2.cpython-35m-arm-linux-gnueabihf.so cv2.so
cd ~/.virtualenvs/cv/lib/python3.5/site-packages/
ln -s /usr/local/lib/python3.5/site-packages/cv2.so cv2.so
进入虚拟环境,进入Python,导入OpenCV,测试没有报错就是可以啦
source ~/.profile
workon cv
python
import cv2
cv2.__version__
显示3.3.0就是OK了?
1、恢复交换空间大小:参考本文第5.3步,改回后重启交换空间即可。
2、为了每次重启时候都要加载环境配置文件,为了省心,可以在 ~/.bashrc
末尾添加
第一句export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 指定了虚拟环境使用Python3,如果上面几步用的Python2 这边无需设置。因为Debian和Ubuntu 默认Python2.
cat >> ~/.bashrc << EOF
# 自动加载环境变量
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
source /usr/local/bin/virtualenvwrapper.sh
EOF
开机时会自动加载。
3、备份内存卡:我还没找到合适的办法,未来详见第3篇。
在这里:https://blog.csdn.net/qq_33273956/article/details/87863553
4、卸载OpenCV方法:
rm -rf opencv-3.3.0 opencv_contrib-3.3.0