大家好,这里是滑稽研究所。随着暑假的到来,熊孩子们都放假了,家中的手办、手机、电脑都成为了他们的进攻目标。特别是我们贵重的电脑,很多时候被熊孩子们蹂躏之后他们还不承认。那怎么办?看我的!
根据需求,我们需要电脑一被启动就调用摄像头进行一次拍摄来抓住我们的‘嫌疑人’,之后第一时间发送邮件通知我们——电脑被熊孩子进攻了!我们以前在做图像处理和个人网站搭建时,调用电脑摄像头和发送邮件的功能都学习过。我只会发送带图片的邮件怎么办?我不知道怎么让电脑一开机就自动运行我的程序怎么办?别着急,且看我一一道来。
我们需要分别需要用到opencv和smtplib库来调用我们的摄像头拍摄以及发送邮件。在实现上面的功能之后,我们还需要把我们的程序打包成exe文件,放入我们的电脑启动项中,使我们的程序可以开机自启。OK,上代码!
源代码:
import cv2
import time
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
cap = cv2.VideoCapture(0) # 注意:这个地方本文的图片里没有参数0,但是应该传入0
f, frame = cap.read() # 此刻拍照
cv2.imwrite(r"拍摄图片的保存路径", frame) # 将拍摄内容保存为png图片
cap.release()
time.sleep(1)
def send():
sender = '发件人@qq.com'
receivers = '收件人@qq.com'
message = MIMEMultipart('related')
subject = '安全监控'
message['Subject'] = subject
message['From'] = sender
message['To'] = receivers
content = MIMEText('','html','utf-8')
message.attach(content)
file=open(r"拍摄到的照片路径", "rb")
img_data = file.read()
file.close()
img = MIMEImage(img_data)
img.add_header('Content-ID', 'imageid')
message.attach(img)
try:
server=smtplib.SMTP_SSL("smtp.qq.com",465)
server.login(sender,"你的授权码")
server.sendmail(sender,receivers,message.as_string())
server.quit()
print ("邮件发送成功")
except smtplib.SMTPException as e:
print(e)
send()
上面的代码实现了我们的拍摄和发送邮件通知的功能,之后我们把它打包成exe文件放入开机启动项即可。
在我的电脑里输入如下命令打开启动项:
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp
把我们刚才打包好的exe程序放入该文件夹即可。我们重新启动电脑之后发现,程序正常启动,我们收到了一封名为安全监控的邮件,打开之后正是我们程序发送的,其中拍下了启动我们电脑的凶手 —— 一只阿拉斯加!
运行结果:
那怎么关闭这个启动程序?打开任务管理器,在启动里找到我们的程序,点击禁用即可。
嗯,大家可以看到,非常的好用~
好,那么本期文章就到这里结束了,我们下期再见呀。