用python做个简单的监控
今天在看博客园的时候看到一篇文章,忘记是什么地址了,之前我也做过一个类似的监控,不过不好控制。之前的模式是通过内网地址访问相应的php程序,php调用python程序,能捕获到摄像头和屏幕以及声音的功能
效果图:
这次直接采用了计划任务的方式:
采集屏幕和摄像头保存为文件,然后将文件通过邮件发出去,效果:
代码:
import cv2 from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from email.mime.image import MIMEImage import smtplib import sys import pyautogui import cv2 import os shexiang = os.path.join(os.path.dirname(sys.argv[0]), 'p1.jpg'); pingmu = os.path.join(os.path.dirname(sys.argv[0]), 'screenshot.png'); # 打开摄像头并拍照 cap = cv2.VideoCapture(0) # 0 表示打开 PC 的内置摄像头(若参数是视频文件路径则打开视频) # 按帧读取图片或视频 # ret,frame 是 cap.read() 方法的两个返回值。 # 其中 ret 是布尔值,如果读取帧是正确的则返回 True,如果文件读取到结尾,它的返回值就为 False。 # frame 就是每一帧的图像,是个三维矩阵。 ret, frame = cap.read() # 按帧读取图片 cv2.imwrite(shexiang, frame) # 保存图像 cap.release() # 释放(关闭)摄像头 # 截图 screen_shot = pyautogui.screenshot() screen_shot.save(pingmu) sender = 'aabbcc@126.com' # 发件人 receivers = 'aabbcc@126.com' # 收件人 pw = 'aasasasasaas' # 三方客户端登录邮箱授权码 subject = '电脑已启动拍照并发送' # 邮件主题 text = '您好,您的电脑已开机,并拍摄了如下照片:' # 邮件正文 msg = MIMEMultipart('mixed') # 定义含有附件类型的邮件 msg['Subject'] = subject # 邮件主题 msg['From'] = sender # 发件人 msg['To'] = receivers # 收件人 # MIMEText三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码 # 构造一个文本邮件对象, plain 原格式输出; html html格式输出 text = MIMEText(text, 'plain', 'utf-8') msg.attach(text) # 将文本内容添加到邮件中 for i in (shexiang, pingmu): sendImg = open(i, 'rb').read() # 读取刚才的图片 img = MIMEImage(sendImg) # 构造一个图片附件对象 # 指定下载的文件类型为:附件, 并加上文件名 img['Content-Disposition'] = 'attachment; filename={}'.format(i) msg.attach(img) # 将附件添加到邮件中 msg_tsr = msg.as_string() # 将msg对象变为str # 发送邮件 try: smtp = smtplib.SMTP() # 定义一个SMTP(传输协议)对象 smtp.connect('smtp.126.com', 25) # 连接到邮件发送服务器,默认25端口 smtp.login(sender, pw) # 使用发件人邮件及授权码登陆 smtp.sendmail(sender, receivers, msg_tsr) # 发送邮件 smtp.quit() # 关闭邮箱,退出登陆 except Exception as e: print('出错了:%s' % (e)) else: print('邮件发送成功!')
编译命令:
pyinstaller -F -w jiankong.py
后面直接将生成的jiankong.exe加入windows计划任务即可
参考链接:https://www.cnblogs.com/east4ming/p/17039381.html
本文来自博客园,作者:河北大学-徐小波,转载请注明原文链接:https://www.cnblogs.com/xuxiaobo/p/17041030.html