当前位置: 首页 > 后端技术 > Python

教你python人脸识别自动开机

时间:2023-03-25 23:41:30 Python

演示视频:https://www.bilibili.com/video...每次回家都按着开机键开机不累吗?如果你看过我之前的推送,你是不是厌倦了每次回家都要喊“echo,打开我的电脑”才能让智能音箱打开电脑?现在,我们有一个全新的操作,坐在椅子上,打开电脑!(避免echo听不懂我这种英语不好的尴尬)本教程需要的工具和应用:1.树莓派32一台,可以在树莓派3上运行的摄像头(我用的是罗技C270,树莓派也可以使用官方相机)3.Python34。一个路由器,一个支持WakeOnLan的主机(大部分都支持)如果你只是想在windows/macos上尝试人脸识别而不是自动开机,你需要:1.Python32.自动开机效果的工作演示相机:1.安装必要的python组件windows/macOS:pipinstallopencv-python非常简单,和树莓派的安装复杂度不在一个档次。树莓派:树莓派上的安装过程比较复杂,需要耐心。分为以下几个步骤:1.1安装Cmake等openCV源码编译工具sudoapt-getinstallbuild-essentialcmakepkg-config1.2安装几个常用格式的图片处理Packagesudoapt-getinstalllibjpeg-devlibtiff5-devlibjasper-devlibpng12-dev1.3视频处理包sudoapt-getinstalllibavcodec-devlibavformat-devlibswscale-devlibv4l-devsudoapt-getinstalllibxvidcore-devlibx264-dev1.4openCVforimage/GUIdisplay依赖highgui模块,为了编译它我们需要安装libgtk2.0-devsudoapt-getinstalllibgtk2.0-dev1.5另外依赖sudoapt-getinstalllibatlas-base-devgfortran1.6当然,还要安装构建Python扩展所需的头文件sudoapt-getinstallpython2.7-devpython3-dev1.7下载并编译opencv和opencv_contrib的源代码下载并解压:cd~wget-Oopencv.ziphttps://github.com/opencv/opencv/archive/4.1.0.zipunzipopencv.zipwget-Oopencv\_contrib.ziphttps://github.com/Itseez/opencv\_contrib/archive/4.1.0.zipunzipopencv\_contrib.zip编译:cd~/opencv-4.1.0/mkdirbuild&cdbuildcmake-D启用\_PRECOMPILED\_HEADERS=OFF\\-DCMAKE\_BUILD\_TYPE=RELEASE\\-DCMAKE\_INSTALL\_PREFIX=/usr/local\\-DINSTALL\_PYTHON\_EXAMPLES=ON\\-DOPENCV\_EXTRA\_MODULES\_PATH=~/opencv\_contrib-4.1.0/modules\\-DBUILD\_EXAMPLES=ON..make-j4makeinstallmakeldconfigPS:请注意你放置的目录和版本的区别。make-j4是用四个线程编译的,过程大概需要2-3个小时。如果j4编译失败,请去掉-j4参数直接make(单线程,大概需要6-9个小时)。2.测试你的相机编写以下Python文件,test.py:运行这个程序:pythontest.py如果成功,你会看到你的相机在启动时亮起(如果有灯),屏幕上会出现两个窗口,一个是彩色的,另一个是灰色的。也可以在读取帧后对帧进行操作,如frame=cv2.flip(frame,-1)#VerticalFlipCameraGraphics垂直翻转相机。2.人脸识别人脸识别模块我们将使用Haar级联分类器。我们收集人脸图片然后训练比较麻烦。好在openCV已经提供了相关的人脸识别XML文件。使用这些文件我们可以直接识别人脸或者笑脸,下载地址:https://github.com/opencv/opencv/tree/master/data/haarcascades我们的代码需要用到里面的haarcascade_frontalface_default.xml,当然如果你想试试其他的鉴定也可以下载。编写以下Python文件test2.py:运行此程序:pythontest2.py如果成功,当人脸出现在相机范围内时,将绘制一个蓝色框。如图所示:3.获取你的人脸数据作为训练集。我们刚刚成功识别了一张脸。现在我们需要将某个人脸识别为某个人。比如当我出现在摄像头中时,它需要识别出这个人就是“幻客”。创建一个新文件夹train_data,用于保存捕获的人脸。一共拍了50张人脸照片。get_train_data.py:4.将刚刚得到的数据训练好后,我们需要对这些图片进行训练。train.py:训练完成后,当前文件夹下会出现trainer.yml文件,也就是我们需要的模型文件。5.实体对象并通知设备自动开机现在我们可以使用刚刚训练好的检测人脸的模型文件来识别人脸的实体对象。recognize.py代码如下:如果只在windows或者macOS上运行,去掉wake_on_lan函数调用即可。其中,在标记人脸的部分,由于我们的训练集数量较少,我调整了识别人脸的阈值,然后开启为40,避免了不能自动开启人脸的尴尬。当识别出的人脸可信度大于40时,当这张人脸对应的名字是我时,就会进行开机操作。如此低的可靠性,根本不用担心识别出别人的脸,然后开机。经过测试,陌生人脸的可信度只有10-20左右。当然,如果还是不放心,可以增加训练集,然后提高判断的可靠性阈值。wake_on_lan()函数中的参数是你需要自动开机的电脑的mac地址。Wakeonlan是WOL的缩写,它允许您使用路由器通过LAN端口为设备供电。这是本次推送中自动开机用到的函数。需要在路由器的管理页面看到本机的mac地址,发送给这个函数。在树莓派上运行这个Python文件,把脸对着摄像头,mac地址对应的设备就会被打开(当然这个设备必须连接路由器)。==============================================想想,事实上,当训练集足够的时候,准确率是相当高的,如果你的照片已经保存在一些数据库中,比如尝试人脸识别通过火车站。然后通过监控摄像头获取您的日常路线将变得轻而易举。这是一件比较可怕的事情。我们需要认真思考人脸识别技术在新时代的应用范围。欢迎查看本系列其他教程:教程1,本文使用本文提到的wakeonlan。1.使用智能音箱语音控制电脑开关机系列教程2.2.语音控制-改造普通风扇系列教程33.语音控制-改造普通台灯本篇到此结束。如果你今天想要我们的Python教程,请继续关注我们。如果对您有帮助,请在下方点赞/观看。有什么问题可以在下方留言区留言,我们会耐心解答!Python实战宝典(pythondict.com)不只是一个合集欢迎关注公众号:Python实战宝典