Zi 字媒體
2017-07-25T20:27:27+00:00
用Python控制CCD拍照+發郵件
資料來源: https://mp.weixin.qq.com/s?__biz=MzU4MTcyMzUyNA==&mid=2247484891&idx=2&sn=63344d7b8b7b95adf70a5eb9dc6b8ead&chksm=fd427130ca35f826b86fd187227c296802d054152c21fc3a021e1c6b5bbcdf63e8130536473f&scene=0&xtrack=1&key=67bbdd4dce2f5f0731e7c54ecfaae9ec3c17dc0a37c2e4834728a85e6ac058d5a1f68e10d1d09b17c8daf29c1dd0dc8908184890f9f6b24292169394bd2c5dbb154e454fedf2608d93230cb38962c817&ascene=1&uin=MjIwODk2NDgxNw==&devicetype=Windows+10&version=62060739&lang=zh_TW&pass_ticket=LbWMEupMs2bRIRdwWRpGfhNHaePDnkSZvwjuHRMXOt3rx9LlNU7AGD0rFsTzrMo6
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)
寫了
5860316篇文章,獲得
23313次喜歡