用Python控制CCD拍照+發郵件
用Python控制CCD拍照+發郵件
deepin 15.9
好看好用的國產linux系統
python 2.7或者3.6
解譯器,哪個版本都可以,我選擇3.6
smtplib
用來發送郵件
email
用來構造郵件內容的庫
opencv
用來調取攝像頭拍攝照片
time
獲取開機以及拍照的時間
os
判斷網路連接
獲取腳本路徑
sys
判斷網路是否聯通
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 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() #获取图片保存路径 def getPicture(): cap = cv2.VideoCapture(0) ret, frame = cap.read() cv2.imwrite(path+'/person.jpg', frame) # 關閉攝像頭 cap.release() 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() def sendEmail(msg): # 發送郵件 smtp = smtplib.SMTP() smtp.connect('smtp.163.com') smtp.login(username, password) smtp.sendmail(sender, addressee, msg) smtp.quit() # 判斷網路是否聯通,成功返回0,不成功返回1 # linux中ping命令不會自動停止,需要加入參數 -c 4,表示在發送指定數目的包後停止。 def isLink(): return os.system('ping -c 4 www.baidu.com') # return os.system('ping www.baidu.com') 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)