最近刚刚安装完opencv,来写一个笔记和大家分享一下。这个方法我是在尝试了https://blog.csdn.net/kxwinxp/article/details/78434211中的方法时 ,老是出现Makefile:160: recipe for target 'all' failed的报错后,而采取这个方法。这个方法主要借鉴了http://jingyan.eeboard.com/article/76476#/prettyPhoto%5Bpp_gal%5D/7/。同时关于本方法,我也建议大家不要仅仅复制粘贴,有的需要根据情况进行修改,文中我也会给出提示。
sudo raspi-config
1.sudo pip install virtualenv
2.新建一个文件夹
cd /home/pi/study/flask
virtualenv venv
然后flask中会多出一个venv文件夹
2.进入venv所在的文件夹,激活虚拟环境
source venv/bin/activate
进入虚拟环境后命令符头部会出现(venv)
,退出虚拟环境可以使用deactivate
命令。
先在Downloads文件夹下新建opencv文件夹
将opencv安装包和opencv_contrib安装包下载在其中同时解压
wget -O opencv.zip https://github.com/Itseez/opencv/archive/3.4.1.zip
unzip opencv.zip
wget -O opencv_contrib.zip https://github.com/Itseez/opencv_contrib/archive/3.4.1.zip
unzip opencv_contrib.zip
sudo apt-get install build-essential cmake pkg-config
sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev
sudo apt-get install libxvidcore-dev libx264-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install libatlas-base-dev gfortran
sudo apt-get install python2.7-dev python3-dev
其中可能出现依赖的安装级过高,需要降级处理。
解决方法:
sudo aptitude install (你的安装包名称)
譬如:sudo aptitude install libgtk2.0-dev
进行过程中,第一次的y/n/q/. 选择n,剩下两次都选y。
其中我建议不要一下子将安装包全部进行aptitude,一个一个进行aptitude,在进行完所有的安装包降级后,再次进行上段代码来检查依赖安装是否安装完成。
然后安装numpy
pip3 install numpy
这里我采取的图形界面安装,之前试过putty远程连接安装的,总是失败,在编译cmake的时候,出现Makefile:160: recipe for target 'all' failed的错误。
安装cmake的图形界面。我用的笔记本与树莓派连接,所以这里需要vnc。
sudo apt-get install cmake-qt-gui
首先进到opencv-3.4.1的目录下,新建build文件夹,然后在终端激活python虚拟环境的条件下(前面已经介绍过),打开CMake:
(venv) pi@raspberrypi:~/Downloads/opencv/opencv-3.4.1 $ cmake-gui
如果打不开的话,直接在vnc里点开cmake。
选择源文件路径,编译文件夹选择刚才新建的build文件夹,点击左下角Configure,第一次完成是红色的,再点一次就变成白色了
然后我们查找OPENCV_EXTRA_MODULES_PATH项,将OpenCV_Contrib-3.4.1/modules的路径填进去,点击Configure
这样OpenCV_Contrib-3.4.1就被添加进去了,然后我们修改关于Python的参数,在查找栏键入PYTHON:取消BIULD_opencv_python2,勾选INSTALL_PYTHON_EXMAPLES,这样就设置为编译Python3的版本了,再次点击Configure,如图
然后就可以生成编译文件了,点击Generate!
然后退出CMake,进入build文件夹下
make -j4
然后等大概半个小时,(一把王者的时间)
然后用如下命令来安装
sudo make install
sudo ldconfig
最后一步,因编译后的库文件cv2.so被输出为cv2.cpython-35m-arm-linux-gnueabihf.so,这将导致该模块在Python3中无法import进来,
我们到该库文件的安装目录/usr/local/lib/python3.5/site-packages/下,将其重命名为cv2.so:(这里的site-packages不一定是这个名称,我的是dist-packages,最稳妥的方法通过图形界面来寻找路径,当然在图形界面里改文件名貌似没有权限,你可以在putty里改或终端,前提是你已经获得root权限。)
cd /usr/local/lib/python3.5/site-packages/
sudo mv cv2.cpython-35m-arm-linux-gnueabihf.so cv2.so
再返回Python3的虚拟环境目录(venv)下在对应的文件夹内建立一个链接
cd /home/pi/study/flask/venv/lib/python3.5/site-packages
ls -l /usr/local/lib/python3.5/dist-packages/
ln -s /usr/local/lib/python3.5/dist-packages/cv2.so cv2.so
ls
在第三行的ls命令输入后,会输出很多数据。
最后,
import cv2
cv2.__version__
会打印出版本号。ok,安装完成。