1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 树莓派4B爽上流安装python3的OpenCV(人脸检测识别—门禁“环境搭建篇”)

树莓派4B爽上流安装python3的OpenCV(人脸检测识别—门禁“环境搭建篇”)

时间:2022-12-22 09:18:16

相关推荐

树莓派4B爽上流安装python3的OpenCV(人脸检测识别—门禁“环境搭建篇”)

树莓派4B安装OpenCV3.4.0人脸检测识别—门禁“环境搭建篇”

前言一、准备工作PC端软件 二、搭建树莓派环境拓展TF内存卡Tips:换源(python软件源) 修改树莓默认Python版本扩展交互空间 “进击”的工具包们OpenCV编译工具OpenCV图像包OpenCV视频I/O包OpenCV-gtk2.0优化函数包 编译Cmake部分(受苦的开始)设置编译参数可能遇到的第一个坑 预备,编译那就来盘点一下各种错误重要空间不足缺失文件类型的错误修改库文件 最后的编译 配置OpenCV到Python环境变量更新环境变量

前言

在上一篇帖子树莓派4无痛安装OpenCV+python3中,详细介绍从零开始的树莓派NOOBS系统安装及配置教程,那从这篇文章,我将会详细讲解如何搭建人脸识别门禁所需要的环境,这部分则是是否实现OpenCV人脸检测识别的关键部分,很多人在搭建环境后编译OpenCV遇到很多报错假死爆内存的问题,这里我将详细介绍一步步讲解我们可能会遇到的报错问题,我会尽肯能的将遇到的bug一一列举解决以便后人一条过

自己在萌新时被这些bug反复摩擦

一、准备工作

树莓派4(略有磨损

显示器(Mico HDIM)

PS:这里我们强烈建议您准备显示器,在某些突发情况(局域网突然不稳定)会导致VNC断联,假死,无响应等

PC端软件

putty

VNC Viewer(建议使用远程桌面软件方便后期编译查看情况)

FileZila(方便与树莓派传输文件)

二、搭建树莓派环境

拓展TF内存卡

Warning:搭建OpenCV环境,树莓派至少16GTF卡,需要拓展TF的存储空间至整个TF卡空间

查看当前树莓派空间分配

df -h #查看当前树莓派空间分配

继续输入

sudo raspi-config

确定finish保存回车ENTER(树莓派会重新启动)

sudo reboot #也可以手动重启

Tips:如果出现以下情况:

此当前不支持您的分区布局工具,您可能正在使用NOOBS,在这种情况下,您的根文件系统已经扩展。

Tips:换源(python软件源)

之前的文章虽然已经 换源(清华)但是在我们搭建环境过程中为了能更稳定不白给我们再次换源,但这次只换Python软件源即可

pip config set global.index-url https://pypi.tuna./simple #清华源pip install pip -Usudo reboot #重启树莓派

单独换源结束,现在进入正题:

在此我将安装Python3的OpenCV3环境

修改树莓默认Python版本

打开我们的终端输入

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 + OEnterCtrl + 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

不着急,一个个来

OpenCV编译工具

sudo apt install build-essentialsudo apt install cmakesudo apt install gitsudo apt install pkg-config

OpenCV图像包

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图像工具包

OpenCV视频I/O包

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

OpenCV-gtk2.0

sudo apt-get install libgtk2.0-dev #安装gtk2.0

优化函数包

sudo apt-get install libatlas-base-dev gfortran #安装优化函数包

以上依赖环境包安装好以后就开始准备配置Cmake参数

本次安装OpenCV3.4.0版,是从GitHub上Git clone的方式下载

编译Cmake部分(受苦的开始)

新建目录从 Github 克隆 OpenCV 和 OpenCV contrib 库

mkdir ~/opencv_build #在opencv里新建build文件夹cd ~/opencv_build

新建build的文件夹存放cmake编译时产生的临时数据

之后git clone

wget -O opencv-4.0.0.zip /Itseez/opencv/archive/4.0.0.zip#下载opencv 4.0.0包

这里下载很慢很慢,毕竟是国外网站,而且下载一般报错很正常(换源没用)耐心等待http回应

个人建议会点魔法的尽量使用魔法

最后安装下载完是这样子

接着需要下载opencv-contrib包文件

wget -O opencv_contrib-4.0.0.zip /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.zipunzip 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环境变量

在整个安装完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 cv2import numpy as npimg = cv2.imread(“你测试的图片路径”)cv2.namedWindows(“TestImage”)cv2.imshow("TestImage",img)cv2.waitKey(0)cv2.destoryAllWindow()

测试成功!!!

感谢观看到现在,这篇文章是截稿一年前写的,当时自己对OpenCV一无所知,树莓派Linux系统的入门小白,现在也不过学到一点皮毛,当时也是折腾了整整一星期的时间吧,中间踩了太多的坑,一度想放弃,当时最后还是坚持下来,完整的安装下来整个OpenCV,因为当时遇到的问题没有及时总结,导致自己的文章写了一半就断了,现在我是找了一个新的储存卡,重头开始,一步步再来一遍,希望自己这一遍的安装,对你有帮助,感谢你看到这里,祝你好运!!!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。