13、树莓派发送微信人脸识别报警

您当前位置: 首页 > > 3、课程讲解

wechat_face.zip  点击下载


由于微信服务器正在升级,此实验暂时无法成功运作


本项目的具体需求是:树莓派启动微信服务和OpenCV服务,OpenCV对摄像头实时视频监控,当检测到人脸后后拍照,将拍摄到的照片通过微信发送给用户的个人好友。

 

本项目中,对于微信的操作,我们需要用到的API是itchat。 itchat是一个微信对于python封装的api,它的功能非常强大,我们可以使用它和python对自己微信的很多信息进行爬取。


 image.png

首先使用pip安装itchat:

Windows用户可以直接打开cmd输入:

pip install itchat

Mac用户由于没有对anaconda的python配置环境变量,需要先在终端输入:

curl https://bootstrap.pypa.io/get-pip.py | python3

 

树莓派版本无需下载pip,直接下载itchat输入:

pip install itchat

pip命令和pip3的区别是:pip3可以直接下载适合python3 使用的package。对于树莓派,我们可以根据spyder中python的版本使用pip2或pip3下载itchat:

pip2 install itchat

 

首先要进行的操作是:

import itchat

itchat.auto_login(hotReload=True)

这两句代码的作用是引入itchat后自动登录,itchat.auto_login()可以自动生成一个二维码,将hotReload设置为True的作用是微信支持本机的热登录,意思是:用户第一次启动程序并扫描二维码登录后,之后再次运行本程序的时候程序将不需要用户重复扫描二维码。

 

之后进行人脸检测,当检测到人脸后通过cv2.imwrite将当前帧保存到out.png中,当前itchat的版本已经不支持直接用itchat.send将消息或文件发送给自己的好友了,但是我们可以用:

itchat.send("@img@%s"%'out.png',"filehelper")

将消息发送给“文件传输助手”,或者直接省略第二个参数将文件发送给自己。本问题的解决方法是利用

itchat.search_friends(name=‘friend1’)这个方法将放回一个昵称为friend1的好友的详细信息的类似json的数组。然后用.send将信息发出。

itchat.send(“@img@%s”%’out.png',account[0]['UserName'])

除此之外,为了避免同样的图片在短时间内被重复发送,对于本程序,我们在每次发送图片前后都设置时间戳,如果距离上一次发送图片的时间间隔小于10分钟,放弃发送图片。

 

运行效果,程序的源码位于/home/pi/yahboom/wechat_face/wachat_face.py将检测到的人脸视频留帧,发送给好友昵称为“senge”的用户,在图片上记录拍照时间:

 

       image.png 

       image.png

 

progressive:上文程序中将照片发送给了“friend1”,微信又一个名为“文件传输助手”的应用,它的“昵称”为“filehelper”。请查阅资料,实现向“filehelper”发送照片