用Python控制CCD拍照+發郵件

用Python控制CCD拍照+發郵件

用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%3D%3D&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)	

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *