o1 前言
为什么会有写这个程序的想法呢?
最初的想法是写一个可以用电脑前置摄像头拍照的程序,在舍友使用你电脑的时候,不经意间获取到一大堆奇葩舍友的表情包。
然后我又突发奇想,要不搞个开机启动吧,这样我就可以看到是谁开启了我的电脑啦。
然后,突(nao)发(dong)奇(da)想(kai)的我又想到万一我电脑不在身边怎么办?要不再加个邮件发送机制吧,开机拍到照片再邮件发送给我?哈哈
02 工具
"htmlcode">
import cv2 import smtplib import sys import os import time from email.mime.image import MIMEImage from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText
05 设置参数
将smtp服务器,登录邮箱账号及密码,收件人,脚本路径等设置为全局变量。方便以后程序移植与修改。
smtpserver = 'smtp.163.com' # smtp服务器 username = '888888888@163.com' # 发件邮箱账号 password = '888888888' # 邮箱登录密码 sender = '888888888@163.com' # 发件人 addressee = '999999999@qq.com' # 收件人 exit_count = 5 # 尝试联网次数 path = os.getcwd() #获取图片保存路径
注:很多邮箱为了安全起见,不会使用真实的登录密码,而是要使用授权码,在QQ邮箱的设置里面可以找到生成授权码选项。
06 实现拍照
def getPicture(): cap = cv2.VideoCapture(0) ret, frame = cap.read() cv2.imwrite(path+'/person.jpg', frame) # 关闭摄像头 cap.release()
07 构造邮件内容
def setMsg(): # 下面依次为邮件类型,主题,发件人和收件人。 msg = MIMEMultipart('mixed') msg['Subject'] = '电脑已经启动' msg['From'] = '88888888888@163.com <88888888888@163.com>' msg['To'] = addressee # 下面为邮件的正文 text = "主人,你的电脑已经开机! 照片如下!" text_plain = MIMEText(text, 'plain', 'utf-8') msg.attach(text_plain) # 构造图片链接 sendimagefile = open(path+'/person.jpg', 'rb').read() image = MIMEImage(sendimagefile) # 下面一句将收件人看到的附件照片名称改为people.png。 image["Content-Disposition"] = 'attachment; filename="people.png"' msg.attach(image) return msg.as_string()
08 实现邮件发送
def sendEmail(msg): # 发送邮件 smtp = smtplib.SMTP() smtp.connect('smtp.163.com') smtp.login(username, password) smtp.sendmail(sender, addressee, msg) smtp.quit()
09 判断网络联通状态
判断网络联通状态的方法很多,我采用很简单很直接的ping。
# 判断网络是否联通,成功返回0,不成功返回1 # linux中ping命令不会自动停止,需要加入参数 -c 4,表示在发送指定数目的包后停止。 def isLink(): return os.system('ping -c 4 www.baidu.com') # return os.system('ping www.baidu.com')
10 主函数逻辑
如果网络连接正常,则拍照发邮件。
如果网络未连接,等待十秒钟再次测试,如果等待次数超过设置的最大次数,程序退出。
def main(): reconnect_times = 0 while isLink(): time.sleep(10) reconnect_times += 1 if reconnect_times == exit_count: sys.exit() getPicture() msg = setMsg() sendEmail(msg)
11 实现开机自启动
首先要写一个开机自启脚本,文件名为:autoStart.sh
脚本内容为
#切换到我们获取照片和发送邮件的工作目录 cd /home/projects/sendemail #执行发送邮件的脚本 python2 sendEmile.py
然后 在/etc/rc.local最后添加一行
./home/projects/sendemail/autoStart.sh
大功告成。
10 重启系统
代码都写好了,重启系统就可以收到邮件啦。
总结
以上所述是小编给大家介绍的使用Python控制摄像头拍照并发邮件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件! 如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。