python实现电脑自动开机_教你用Python人脸识别自动开机,值得收藏

你如果有看过我以前的推送,是不是厌烦了每次回家都要喊 “echo,turn on my pc”,让智能音箱打开电脑的操作?

现在,我们有一个全新的操作,坐到椅子上就能让电脑开机!

(避免你跟我一样,拥有一口蹩脚的英语,让 echo 听不懂的尴尬)

1880991-20200513103151126-130644421.jpg

这里还要注意:光理论是不够的。这里顺便总大家一套2020最新python入门到高级项目实战视频教程,可以去小编的Python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,还可以跟老司机交流讨教!

本教程所需要的工具及应用:

1. 一个树莓派 3

2. 一个可在树莓派 3 上运行的摄像头(我用的是罗技 C270,树莓派官方摄像头也可以)

3.Python3

4. 路由器一台,及支持 WakeOnLan 的主机(大部分都支持)

如果你只是想在 windows/macos 上尝试一下人脸识别而不需要进行自动开机,则需要:

1.Python3

2. 一个可运行的摄像头

自动开机效果演示:

1. 安装必要的 python 组件

windows/macOS:

pip install opencv-python

非常简单,和树莓派的安装复杂度不是一个级别的。

在树莓派上的安装过程比较复杂,需要耐心折腾,分为以下步骤:

1.1 安装 Cmake 等编译 openCV 源码的工具

sudo apt-get install build-essential cmake pkg-config

1.2 安装几种常见格式的图像操作的包

sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev

1.3 安装视频操作的包

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

sudo apt-get install libxvidcore-dev libx264-dev

1.4 openCV 用于图像 /GUI 展示的功能依赖 highgui 模块,为了编译它我们需要安装 libgtk2.0-dev

sudo apt-get install libgtk2.0-dev

1.5 额外依赖

sudo apt-get install libatlas-base-dev gfortran

1.6 当然,还要安装构建 Python 扩展所需要的头文件

sudo apt-get install python2.7-dev python3-dev

1.7 下载并编译 opencv 和 opencv_contrib 的源码

下载并解压:

cd ~

wget -O opencv.zip https://github.com/opencv/opencv/archive/4.1.0.zip

unzip opencv.zip

wget -O opencv\_contrib.zip https://github.com/Itseez/opencv\_contrib/archive/4.1.0.zip

unzip opencv\_contrib.zip

编译:

cd ~/opencv-4.1.0/

mkdir build & cd build

cmake -D ENABLE\_PRECOMPILED\_HEADERS=OFF \\ -D CMAKE\_BUILD\_TYPE=RELEASE \\ -D CMAKE\_INSTALL\_PREFIX=/usr/local \\ -D INSTALL\_PYTHON\_EXAMPLES=ON \\ -D OPENCV\_EXTRA\_MODULES\_PATH=~/opencv\_contrib-4.1.0/modules \\ -D BUILD\_EXAMPLES=ON ..

make -j4

make install

make ldconfig

PS:请注意你自己放置的目录和版本的区别,make -j4 是四线程进行编译,过程大约需要 2-3 个小时,如果说 j4 编译失败,请去掉 - j4 这个参数,直接 make (单线程,这样大约需要 6-9 个小时).

2. 测试你的摄像头

编写如下的 Python 文件,test.py:

2020030217243485.png

运行本程序:

python test.py

如果成功,你将会看到你的摄像头灯亮起(如果有灯的话),屏幕出现两个窗口,一个是彩色的,一个是灰色的。

2020030217245927.png

你还可以在读取到 frame 后对 frame 进行操作,如

frame = cv2.flip (frame, -1) # 垂直反转摄像头图形

2020030217251454.png

对摄像头进行垂直翻转。

2. 人脸识别

人脸识别模块我们将使用 Haar 级联分类器,我们自己搜集人脸图片然后进行训练是比较麻烦的,好在 openCV 已经提供了相关的人脸识别 XML 文件,使用这些文件我们就能直接进行人脸或笑脸的识别,下载地址:

我们代码需要用到里面的 haarcascade_frontalface_default.xml ,当然,如果你想尝试别的识别也可以进行下载。

编写如下的 Python 文件,test2.py:

2020030217252942.png

运行本程序:

python test2.py

如果成功,当有人脸出现在摄像头范围内,则会被用蓝色框框画起来。如图所示:

2020030217254839.png

3. 获取你的人脸数据作为训练集

好了,我们刚刚成功识别了人脸,现在我们需要识别出某个人脸是某个人,比如当我出现在镜头中,它要识别出这个人就是 “幻象客”。

新建文件夹 train_data,用于保存拍摄下来的人脸,一共拍摄五十张人脸图片,get_train_data.py:

2020030217260114.png

4. 训练刚刚得到的数据

拍摄完我们的图像后,我们还需要对这些图片进行训练,train.py:

2020030217261834.png

训练完成后,当前文件夹会出现 trainer.yml 文件,这就是我们所需要的模型文件。

5. 实体对象并通知设备自动开机

现在我们就可以使用刚刚训练出来的模型文件,对人脸进行检测,以识别出该人脸的实体对象。

recognize.py 代码如下:

如果你只是在 windows 或者 macOS 上运行,直接把 wake_on_lan 函数调用去掉即可。

2020030217270242.png

2020030217271329.png

其中,在标记人脸部分,由于我们的训练集数量少,我把识别到的人脸然后开机的阈值调到了 40,避免无法自动开机的尴尬之处,当识别到的人脸的信度大于 40,这个人脸对应的名字是我的时候,才会进行开机操作。

这么低的信度也不需要担心识别到别人的脸也开机,经过测试,陌生人的脸大约只有 10~20 的信度。当然,如果你还是担心,可以把训练集增加,然后调高该判断的信度阈值。

wake_on_lan () 函数中的参数,是你需要自动开机的电脑的 mac 地址。wake on lan 简称 WOL,它能让你使用路由器通过 LAN 端口对某个设备进行开机的操作。本推送中的自动开机使用到的功能就是这个。你需要在路由器的管理页面中,看到本机的 mac 地址,并送入这个函数中。

在树莓派上运行这个 Python 文件,将脸凑到摄像机前,就会将 mac 地址对应的设备开机(当然,这个设备要连着路由器才行)。

最后注意:光理论是不够的。这里顺便总大家一套2020最新python入门到高级项目实战视频教程,可以去小编的Python交流.裙 :七衣衣九七七巴而五(数字的谐音)转换下可以找到了,还可以跟老司机交流讨教!

本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
人脸识别是一种基于图像处理和模式识别技术的应用,能够自动识别图像中的人脸,并对其进行识别和分类。Python是一种功能强大的编程语言,可以用来实现人脸识别程序。 以下是一个使用Python实现人脸识别的简单步骤: 1. 安装OpenCV库:OpenCV是一个广泛使用的计算机视觉库,可用于处理图像和视频数据。在Python中,可以使用pip命令安装OpenCV库,如下所示: ``` pip install opencv-python ``` 2. 收集人脸图像:需要收集一组人脸图像,用于训练人脸识别模型。可以使用摄像头或从文件中读取图像。 3. 训练人脸识别模型:使用Python编写代码,使用OpenCV库训练人脸识别模型。OpenCV库提供了许多不同的人脸识别算法,例如Eigenfaces、Fisherfaces和LBPH算法等。 4. 测试:使用训练好的模型进行人脸识别。可以使用摄像头或从文件中读取图像,然后将其传递给人脸识别模型进行识别。 下面是一个简单的Python程序,用于实现人脸识别: ```python import cv2 # 加载人脸识别器 face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') # 加载训练好的人脸识别模型 recognizer = cv2.face.LBPHFaceRecognizer_create() recognizer.read('trainer.yml') # 打开摄像头 cap = cv2.VideoCapture(0) while True: # 从摄像头中读取图像 ret, img = cap.read() # 转换为灰度图像 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 检测人脸 faces = face_cascade.detectMultiScale(gray, 1.3, 5) for (x,y,w,h) in faces: # 绘制矩形框 cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2) # 识别人脸 id, confidence = recognizer.predict(gray[y:y+h,x:x+w]) # 显示识别结果 if confidence < 70: cv2.putText(img, "Name: " + str(id), (x+5,y-5), cv2.FONT_HERSHEY_SIMPLEX, 1, (255,255,255), 2) else: cv2.putText(img, "Unknown", (x+5,y-5), cv2.FONT_HERSHEY_SIMPLEX, 1, (255,255,255), 2) # 显示图像 cv2.imshow('Face Recognition',img) # 按下q键退出程序 if cv2.waitKey(1) & 0xFF == ord('q'): break # 释放摄像头并关闭窗口 cap.release() cv2.destroyAllWindows() ``` 上述代码中,首先加载了人脸识别器和训练好的人脸识别模型,然后打开摄像头,不断读取摄像头中的图像。使用人脸识别检测图像中的人脸,然后使用训练好的模型进行识别。如果识别结果可信度高于70%,则显示人名,否则显示未知。最后,将识别结果显示在图像中,并等待用户按下q键退出程序。 注意,在使用OpenCV库进行人脸识别时,需要使用训练好的模型进行识别。可以使用OpenCV提供的许多不同的算法来训练人脸识别模型,例如Eigenfaces、Fisherfaces和LBPH算法等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值