这玩意贼难安装,本人装了两天,make的时候失败一次就要从头再来。。。。
首先说明我这是:在树莓派安装运行在Python3上的OpenCV
进入正题:
安装前提:
1、配置好树莓派的Raspbian操作系统
2.切换到国内的apt-get下载源和pip下载源,防止下载速度过慢(这里就不详细说了,请自行百度)
安装opencv
1、安装numpy
安装Python科学计算库numpy(先获取管理员权限,su)
pip3 install numpy
2、在树莓派设置中把根目录扩大到整个SD卡
命令行界面输入命令,进入树莓派配置界面。用上下键和左右键切换光标位置。
raspi-config
选择第七行:Advanced Options
选择第一项Expand Filesystem,将根目录扩展到这个SD卡。如果不进行这一步,后续命令会出现卡死。
退出设置界面,重启树莓派(reboot)。
3、安装OpenCV所需的库
八个命令,挨个运行,倒数第三条需要安装四个dev
sudo apt-get install build-essential git cmake pkg-config -y
sudo apt-get install libjpeg8-dev -y
sudo apt-get install libtiff5-dev -y
sudo apt-get install libjasper-dev -y
sudo apt-get install libpng12-dev -y
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev -y
sudo apt-get install libgtk2.0-dev -y
sudo apt-get install libatlas-base-dev gfortran -y
4、下载OpenCV
下载两个压缩包到树莓派的**/home/pi/Downloads**目录下(最好下载到这个地方,后续比较方便)
首先切换到Downloads目录下,(根据自己情况而定,不一定是我下面写的这个路径)
cd /home/pi/Downloads
用wget下载
wget https://github.com/Itseez/opencv/archive/3.4.0.zip
wget https://github.com/Itseez/opencv_contrib/archive/3.4.0.zip
若是访问GitHub有些困难,自行解决(文章末尾有链接)。
下载完成之后,解压到downloads文件夹
unzip opencv-3.4.0.zip
unzip opencv_contrib-3.4.0.zip
5、设置编译参数
cd /home/pi/Downloads/opencv-3.4.0
mkdir build
cd build
设置CMAKE参数,时间有点长,十分钟左右吧,下面是一整句话,不要忘了复制后面俩点
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D OPENCV_EXTRA_MODULES_PATH=/home/pi/Downloads/opencv_contrib-3.4.0/modules -D BUILD_EXAMPLES=ON -D WITH_LIBV4L=ON PYTHON3_EXECUTABLE=/usr/bin/python3.5 PYTHON_INCLUDE_DIR=/usr/include/python3.5 PYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.5m.so PYTHON3_NUMPY_INCLUDE_DIRS=/home/pi/.local/lib/python3.5/site-packages/numpy/core/include ..
执行完成之后若出现下图表示成功
6、编译(幺蛾子最多且最耗时间的一个)
首先你存储空间要够,5g以上,最好不要用ssh连接树莓派,一段时间ssh会自动退出,导致你不知道make结束了没。最好用vnc连接,也可以树莓接显示器。
cd /home/pi/Downloads/opencv-3.4.0/build
make
树莓派4b,4g的运行内存,我跑了差不多四个小时左右,而且中途出岔子贼多。我总结一下我的
1、缺少文件型错误
报错:Built target opencv_tracking [Makefile:163 : all] 错误2,意思就是缺少boostdesc_bgm.i,boostdesc_bgm_bi.i等等这些文件
就是因为下载的安装包文件不全,把缺少的文件拷贝到:home/pi/Downloads/opencv_contrib-3.4.3/modules/xfeatures2d/src/下即可
需要用的文件,我最后给个链接。
2、路径报错类型
报错:fatal error: opencv2/xfeatures2d/cuda.hpp: 没有那个文件或目录。
Building CXX object modules/stitching/CMakeFiles/opencv_stitching_pch_dephelp.dir/opencv_stitching_pch_dephelp.cxx.o
In file included from /home/pi/opencv-3.4.0/build/modules/stitching/opencv_stitching_pch_dephelp.cxx:1:
/home/pi/opencv-3.4.0/modules/stitching/src/precomp.hpp:91:12: fatal error: opencv2/xfeatures2d/cuda.hpp: 没有那个文件或目录
include “opencv2/xfeatures2d/cuda.hpp”
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make[2]: *** [modules/stitching/CMakeFiles/opencv_stitching_pch_dephelp.dir/build.make:63:modules/stitching/CMakeFiles/opencv_stitching_pch_dephelp.dir/opencv_stitching_pch_dephelp.cxx.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:21443:modules/stitching/CMakeFiles/opencv_stitching_pch_dephelp.dir/all] 错误 2
make: *** [Makefile:163:all] 错误 2
这是一个类型,会爆出各种错误,比如cuda.hpp,xfeatures2d.hpp,nonfree.hpp等等好几个文件,都报错“没有那个文件或目录”。
这就是绝对路径和相对路径的区别,系统默认给的是相对路径,我们只需要找到报错的那个文件,找到错误的那一行,把相对路径,修改成绝对路径。
例如:include “opencv2/xfeatures2d/cuda.hpp”报错,就是因为找不到/cuda.hpp,我们直接把这个cuda.hpp设置成绝对路径,找到这个/cuda.hpp文件。
如果是按照我上面的路径,一般来说,都在/home/pi/Downloads/opencv_contrib-3.4.0/modules/xfeatures2d/include/opencv2/xfeatures2d这里
然后我们找到报错的这个文件(/home/pi/opencv-3.4.0/modules/stitching/src/precomp.hpp),修改报错的这一行
然后就把include “opencv2/xfeatures2d/cuda.hpp”改成include “/home/pi/Downloads/opencv_contrib-3.4.0/modules/xfeatures2d/include/opencv2/xfeatures2d/cuda.hpp”,然后保存,🆗
总之这种类型解决方法一样,缺少的文件都在/home/pi/Downloads/opencv_contrib-3.4.0/modules/xfeatures2d/include/opencv2这个里面。遇到“没有那个文件或目录”就去这个文件夹找,用pwd得到路径,然后去报错的文件中修改路径。
还有一点需要注意的是,make失败后,如果要重新make,首先要clean掉之前make的,在build目录下,执行
make clean
然后再
make
出现下图所示,就成功了(预估三个多小时)
100%之后且没有报错,恭喜您,马上成功!
接下来在build目录下,接着(需要管理员条件下运行,如果不是管理员身份,请先su)
make insall
这个命令需要半分钟吧,没报错就说明成功了。
7、在Python3上测试OpenCV
打开python3,命令我就不用说了吧
首先
import cv2
然后(注意是两个下划线)
cv2.__version__
出现如图效果,就说明成功了。
所需文件
opencv3.4文件以及缺少文件.zip: https://089u.com/file/30936724-479224952 访问密码:123456