赞
踩
在上一篇帖子树莓派4无痛安装OpenCV+python3中,详细介绍 从零开始的树莓派NOOBS系统安装及配置教程,那从这篇文章,我将会详细讲解如何搭建人脸识别门禁所需要的环境,这部分则是是否实现OpenCV人脸检测识别的关键部分,很多人在搭建环境后编译OpenCV遇到很多报错假死爆内存的问题,这里我将详细介绍一步步讲解我们可能会遇到的报错问题,我会尽肯能的将遇到的bug一一列举解决以便后人一条过
自己在萌新时被这些bug反复摩擦
树莓派4(略有磨损 )
显示器(Mico HDIM)
PS:这里我们强烈建议您准备显示器,在某些突发情况(局域网突然不稳定)会导致VNC断联,假死,无响应等
putty
VNC Viewer(建议使用远程桌面软件方便后期编译查看情况)
FileZila(方便与树莓派传输文件)
Warning:搭建OpenCV环境,树莓派至少16GTF卡,需要拓展TF的存储空间至整个TF卡空间
查看当前树莓派空间分配
df -h #查看当前树莓派空间分配
继续输入
sudo raspi-config
确定—finish保存回车ENTER(树莓派会重新启动)
sudo reboot #也可以手动重启
Tips:如果出现以下情况:
此当前不支持您的分区布局工具,您可能正在使用NOOBS,在这种情况下,您的根文件系统已经扩展。
之前的文章虽然已经 换源(清华)但是在我们搭建环境过程中为了能更稳定 不白给 我们再次换源,但这次只换Python软件源即可
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple #清华源
pip install pip -U
sudo reboot #重启树莓派
单独换源结束,现在进入正题:
在此我将安装Python3的OpenCV3环境
打开我们的终端输入
python
我发现默认版本是Python2.7.16(输入Ctrl + Z退出python环境)
继续输入
python3
python3版本为3.7.3**,所以修改默认版本(python)为python3.7
输入sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100
Keep goingsudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
在此输入python
发现修改默认版本成功
安装OpenCV3编译部分是最头痛的,Up主自己在编译中很多次都会卡在40%左右假死挂起然后报错,部分报错原因可能是由于交互空间不足导致的,在之前树莓派3B上尝试了很多次都假死挂起(内存太小),在此我们先增大Swap交互空间
在终端中输入
free -m #查看当前内存
继续输入
sudo nano /etc/dphys-swapfile
将CONF_SWAPSIZE = 改为1024
Ctrl + O再Enter再Ctrl + X保存退出
继续输入
sudo /etc/init.d/dphys-swapfile restart
OK增大Swap交互空间成功
本次使用的树莓派4(2GB)方便起见我改数值为1024+512,大家根据自身使用配置情况可以进一步修改
你需要安装下载以下的工具包们:libjpeg-dev libatlas-base-dev libjpeg-dev libtiff5-dev libpng12-dev libqtgui4 libqt4-test libjasper-dev
不着急,一个个来
sudo apt install build-essential
sudo apt install cmake
sudo apt install git
sudo apt install pkg-config
sudo apt-get install libtiff5-dev #tif格式图像工具包
sudo apt-get install libjasper-dev #JPEG-2000图像工具包
sudo apt-get install libjpeg8-dev #jpeg格式图像工具包
sudo apt-get install libpng12-dev #png图像工具包
sudo apt-get install libavcodec-dev
sudo apt-get install libv4l-dev
sudo apt-get install libavformat-dev
sudo apt-get install libswscale-dev
sudo apt-get install libgtk2.0-dev #安装gtk2.0
sudo apt-get install libatlas-base-dev gfortran #安装优化函数包
以上依赖环境包安装好以后就开始准备配置Cmake参数
本次安装OpenCV3.4.0版,是从GitHub上Git clone的方式下载
新建目录从 Github 克隆 OpenCV 和 OpenCV contrib 库
mkdir ~/opencv_build #在opencv里新建build文件夹
cd ~/opencv_build
新建build的文件夹存放cmake编译时产生的临时数据
之后git clone
wget -O opencv-4.0.0.zip https://github.com/Itseez/opencv/archive/4.0.0.zip
#下载opencv 4.0.0包
这里下载很慢很慢,毕竟是国外网站,而且下载一般报错很正常(换源没用 )耐心等待http回应
个人建议会点魔法的尽量使用魔法
最后安装下载完是这样子
接着需要下载opencv-contrib包文件
wget -O opencv_contrib-4.0.0.zip https://github.com/Itseez/opencv_contrib/archive/4.0.0.zip #下载opencv包
最后下载完成…
这里网络不好的小伙伴我提供一个完整的资源下载(包含opencv4.0.0、opencv_contrib-4.0.0)OpenCV4.0.0安装环境
unzip opencv-4.0.0.zip
unzip opencv_contrib-4.0.0.zip
#解压文件
在文件解压完毕后,保证文件路径没有问题:向我这样的结构:/opencv4.0.0/build/以下的操作均需要在build的这个文件夹进行:
接下来准备设置编译参数,编译的语句安全起见要加 sudo
sudo cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=/home/pi/opencv/opencv_contrib-4.0.0/modules \
#根据自己contrib中modules文件夹的地址进行配置
-D INSTALL_PYTHON_EXAMPLES=ON \
-D INSTALL_CXX_EXAMPLES=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON \
-D BUILD_EXAMPLES=ON ..
这里是编译的代码的详细
CMAKE_BUILD_TYPE #编译方式
CMAKE_INSTALL_PREFIX #安装目录
OPENCV_EXTRA_MODULES_PATH #加载额外模块
INSTALL_PYTHON_EXAMPLES #安装官方python例程
BUILD_EXAMPLES #编译例程
OPENCV_GENERATE_PKGCONFIG : #配置pkg-config , OpenCV 4 默认下生成”opencv4.pc“
-D INSTALL_C_EXAMPLES=ON #如果需要C语言的编程案例在末尾加上
开始编译:
设置编译参数完成看到结尾像这样,没有报错且都为done的时候,编译部分结束
到这里,在成功编译的情况下建议把编译的文件夹进行一个备份:(/build)
cd ..
cp -r build ./buildres #在当前目录备份build为buildres文件夹
但是吧…在这个步骤中,可能会出现一个错误:
这种情况是文件编译出错,我自己第一次编译也是一直失败
可能出现的原因:
1.下载的opencv以及opencv-contrib文件不完整,尤其是git clone下的文件,可能文件丢失
建议重新下载
2.在编译的时候,没有添加“sudo”,在Linux中,sudo是高权限的指令
尝试添加sudo,并且删除原编译的build文件夹中的所有文件后重新编译
一次编译到这里是真的NB!!!(反正我安装了差不多4次的opencv,没有一次能一次顺利的编译完成)
正常来说,脸白一点,一次完整的编译成功!!!雀食欧皇
(一次编译成功的重要原因是你的opencv和opencv-contrib文件很完整,也就是你连接GitHub的网速好,或者下载的哪个文件完整度较高)
不然…基本就会在编译中,会报错缺失文件
换32GB吧,16GB可能少点的话编译雀食很危险,32GB最保险
**重要提示:**内存卡一定要看看是不是已经扩充到整个磁盘:
这是一张32GB的卡,在第一次编译因为没有扩充到整个磁盘,导致空间不足
扩充磁盘的方法:文章开头有提到
这个报错是很常见的了,原因前文也提到了,就是opencv和opencv-contrib两个文件不完整
具体表现在:
缺失以下的文件:
那就缺什么下载什么,这里提供以上文件的完整包——下载
和上图差不多的报错,将缺失的文件放到
opencv_contrib/modules/xfeatures2d/src/(记得是opencv-contrib这个文件夹里)
这是我心态崩的一次安装opencv了
在编译到99%报错了直接原地爆炸
注意看这里:
意思是我们缺失这个文件“test_detectors_regression.impl.hpp"
解决这个问题首先要看看我们是否有这个文件
在终端中输入
find -name test_detectors_regression.impl.hpp
或者去这个路径
/Users/bigboss/Documents/CodeHouse/OpenCV4.0.0/OpenCV4.0.0/opencv-4.0.0/modules/features2d/test/test_descriptors_regression.impl.hpp
看看这个文件是否存在
若有这个文件则打开opencv/CmakeLists.txt文件中,插入
include_directories("modules")
至于插入的位置,位置在构建前就行,举例
执行
sudo make -j4 2>&1 | tee make.log
通过!!!
接着执行
sudo make install
finally 终于成功安装了!!!!
在整个安装完OpenCV环境下,打开终端进行测试
输入 : Python
进入Python的运行环境
输入import cv2
如果没有错误的话说明可以正常运行opencv的环境了,提示找不到库时候,说明需要将opencv的环境配置到Python中
退出Python环境,在终端输入
cd /usr/local/python/cv2
进入到Python cv2的文件下,继续输入ls
查看当前的文件夹下的文件
有一个文件夹是Python-3.7 ,进入这个文件夹 /usr/local/python/cv2/python-3.7(根据自己的文件版本进行调整)
这个文件夹里面有一个文件 cv2.cpython-37m-arm-linux-gnueabihf.so将这个文件复制到这个路径下**/usr/local/lib/python3.7/dist-packages**
sudo cp cv2.cpython-37m-arm-linux-gnueabihf.so /usr/local/lib/python3.7/dist-packages
sudo ldconfig
打开bash.bashrc配置文件
sudo nano /etc/bash.bashrc
进去后,在末尾加入:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH
重启树莓派sudo reboot now
结束!!!
最后检测一下
测试代码
import cv2
import numpy as np
img = cv2.imread(“你测试的图片路径”)
cv2.namedWindows(“TestImage”)
cv2.imshow("TestImage",img)
cv2.waitKey(0)
cv2.destoryAllWindow()
测试成功!!!
感谢观看到现在,这篇文章是截稿一年前写的,当时自己对OpenCV一无所知,树莓派Linux系统的入门小白,现在也不过学到一点皮毛,当时也是折腾了整整一星期的时间吧,中间踩了太多的坑,一度想放弃,当时最后还是坚持下来,完整的安装下来整个OpenCV,因为当时遇到的问题没有及时总结,导致自己的文章写了一半就断了,现在我是找了一个新的储存卡,重头开始,一步步再来一遍,希望自己这一遍的安装,对你有帮助,感谢你看到这里,祝你好运!!!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。