最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Python控制攝像頭拍照并發(fā)郵件

 更新時間:2019年04月23日 11:21:52   作者:一起學(xué)Python呀  
這篇文章主要介紹了使用Python控制攝像頭拍照并發(fā)郵件的相關(guān)知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下

o1 前言

為什么會有寫這個程序的想法呢?

最初的想法是寫一個可以用電腦前置攝像頭拍照的程序,在舍友使用你電腦的時候,不經(jīng)意間獲取到一大堆奇葩舍友的表情包。

然后我又突發(fā)奇想,要不搞個開機(jī)啟動吧,這樣我就可以看到是誰開啟了我的電腦啦。

然后,突(nao)發(fā)(dong)奇(da)想(kai)的我又想到萬一我電腦不在身邊怎么辦?要不再加個郵件發(fā)送機(jī)制吧,開機(jī)拍到照片再郵件發(fā)送給我?哈哈

02 工具

•deepin 15.9
•好看好用的國產(chǎn)linux系統(tǒng)
•python 2.7或者3.6
•解釋器,哪個版本都可以,我選擇3.6
•smtplib
•用來發(fā)送郵件
•email
•用來構(gòu)造郵件內(nèi)容的庫
•opencv
•用來調(diào)取攝像頭拍攝照片
•time
•獲取開機(jī)以及拍照的時間
•os
•判斷網(wǎng)絡(luò)連接
•獲取腳本路徑
•sys
•判斷網(wǎng)絡(luò)是否聯(lián)通

03 思路

•1.用opencv庫調(diào)用攝像頭拍照保存為文件。
•2.檢查網(wǎng)絡(luò)是否連接,未連接則圖片保存到本地。
•3.用email庫構(gòu)造郵件內(nèi)容,把保存的照片以附件的形式插入到郵件內(nèi)容中。
•4.用smtplib庫發(fā)送郵件給指定郵件接收者。
•5.實現(xiàn)腳本開機(jī)自啟動。

04 安裝及導(dǎo)入所使用的包

首先當(dāng)然是安裝opencv啦。

其他的email、smtplib、sys、os、time為python默認(rèn)安裝的包,我們只需要導(dǎo)入即可。

如果是python3.6安裝opencv就在終端輸入:

pip3 install opencv-python

如果是python2.7安裝opencv,就在終端輸入:

pip install opencv-python

安裝完成后,我們導(dǎo)入必要的包。

各個包的作用在前文已經(jīng)講過,不再多言。

email 我們只需要部分功能,所以選擇性導(dǎo)入

 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 設(shè)置參數(shù)

將smtp服務(wù)器,登錄郵箱賬號及密碼,收件人,腳本路徑等設(shè)置為全局變量。方便以后程序移植與修改。

smtpserver = 'smtp.163.com'   # smtp服務(wù)器
username = '888888888@163.com' # 發(fā)件郵箱賬號
password = '888888888'   # 郵箱登錄密碼
sender  = '888888888@163.com' # 發(fā)件人
addressee = '999999999@qq.com'  # 收件人
exit_count = 5      # 嘗試聯(lián)網(wǎng)次數(shù)
path  = os.getcwd()   #獲取圖片保存路徑 

注:很多郵箱為了安全起見,不會使用真實的登錄密碼,而是要使用授權(quán)碼,在QQ郵箱的設(shè)置里面可以找到生成授權(quán)碼選項。

06 實現(xiàn)拍照

def getPicture():
 cap = cv2.VideoCapture(0)
 ret, frame = cap.read()
 cv2.imwrite(path+'/person.jpg', frame)
 # 關(guān)閉攝像頭
 cap.release()

07 構(gòu)造郵件內(nèi)容

def setMsg():
 # 下面依次為郵件類型,主題,發(fā)件人和收件人。
 msg = MIMEMultipart('mixed')
 msg['Subject'] = '電腦已經(jīng)啟動'
 msg['From'] = '88888888888@163.com <88888888888@163.com>'
 msg['To'] = addressee
 # 下面為郵件的正文
 text = "主人,你的電腦已經(jīng)開機(jī)!
照片如下!"
 text_plain = MIMEText(text, 'plain', 'utf-8')
 msg.attach(text_plain)
 # 構(gòu)造圖片鏈接
 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 實現(xiàn)郵件發(fā)送

def sendEmail(msg):
 # 發(fā)送郵件
 smtp = smtplib.SMTP()
 smtp.connect('smtp.163.com')
 smtp.login(username, password)
 smtp.sendmail(sender, addressee, msg)
 smtp.quit()

09 判斷網(wǎng)絡(luò)聯(lián)通狀態(tài)

判斷網(wǎng)絡(luò)聯(lián)通狀態(tài)的方法很多,我采用很簡單很直接的ping。

# 判斷網(wǎng)絡(luò)是否聯(lián)通,成功返回0,不成功返回1
# linux中ping命令不會自動停止,需要加入?yún)?shù) -c 4,表示在發(fā)送指定數(shù)目的包后停止。
def isLink():
 return os.system('ping -c 4 www.baidu.com')
 # return os.system('ping www.baidu.com')   

10 主函數(shù)邏輯

如果網(wǎng)絡(luò)連接正常,則拍照發(fā)郵件。

如果網(wǎng)絡(luò)未連接,等待十秒鐘再次測試,如果等待次數(shù)超過設(shè)置的最大次數(shù),程序退出。

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 實現(xiàn)開機(jī)自啟動

首先要寫一個開機(jī)自啟腳本,文件名為:autoStart.sh

腳本內(nèi)容為

#切換到我們獲取照片和發(fā)送郵件的工作目錄
cd /home/projects/sendemail
#執(zhí)行發(fā)送郵件的腳本
python2 sendEmile.py

然后 在/etc/rc.local最后添加一行

./home/projects/sendemail/autoStart.sh

大功告成。

10 重啟系統(tǒng)

代碼都寫好了,重啟系統(tǒng)就可以收到郵件啦。

總結(jié)

以上所述是小編給大家介紹的使用Python控制攝像頭拍照并發(fā)郵件,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

相關(guān)文章

  • Python Flask入門

    Python Flask入門

    今天小編就為大家分享一篇Python Flask的入門教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-11-11
  • python爬取豆瓣評論制作詞云代碼

    python爬取豆瓣評論制作詞云代碼

    大家好,本篇文章主要講的是python爬取豆瓣評論制作詞云代碼,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • python爬蟲之利用Selenium+Requests爬取拉勾網(wǎng)

    python爬蟲之利用Selenium+Requests爬取拉勾網(wǎng)

    這篇文章主要介紹了python爬蟲之利用Selenium+Requests爬取拉勾網(wǎng),文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python爬蟲的小伙伴們有很好的幫助,需要的朋友可以參考下
    2021-04-04
  • 基于PyQt5實現(xiàn)狀態(tài)欄(statusBar)顯示和隱藏功能

    基于PyQt5實現(xiàn)狀態(tài)欄(statusBar)顯示和隱藏功能

    這篇文章主要為大家詳細(xì)介紹了如何利用PyQt5實現(xiàn)狀態(tài)欄顯示和隱藏功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-08-08
  • Flask??response?對象詳情

    Flask??response?對象詳情

    在?Flask?中,響應(yīng)使用?Response?對象表示,響應(yīng)報文中的大部分內(nèi)容由服務(wù)器處理,一般情況下,我們只負(fù)責(zé)返回主體內(nèi)容即可。在之前的文章中,我們了解到?Flask?會先匹配請求?url?的路由,調(diào)用對應(yīng)的視圖函數(shù),視圖函數(shù)的返回值構(gòu)成了響應(yīng)報文的主體內(nèi)容。
    2021-11-11
  • 淺談python內(nèi)置變量-reversed(seq)

    淺談python內(nèi)置變量-reversed(seq)

    下面小編就為大家?guī)硪黄獪\談python內(nèi)置變量-reversed(seq)。小編覺得挺不錯的?,F(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • python 判斷l(xiāng)inux進(jìn)程,并殺死進(jìn)程的實現(xiàn)方法

    python 判斷l(xiāng)inux進(jìn)程,并殺死進(jìn)程的實現(xiàn)方法

    今天小編就為大家分享一篇python 判斷l(xiāng)inux進(jìn)程,并殺死進(jìn)程的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • python3.0 字典key排序

    python3.0 字典key排序

    字典對象其實就是鍵-值對 下面是字典對象的添加,修改,刪除 (修改與添加方法相同,當(dāng)key值不存在的時候添加)
    2008-12-12
  • python2.7無法使用pip的解決方法(安裝easy_install)

    python2.7無法使用pip的解決方法(安裝easy_install)

    下面小編就為大家分享一篇python2.7無法使用pip的解決方法(安裝easy_install),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • 利用PyQt5+Matplotlib 繪制靜態(tài)/動態(tài)圖的實現(xiàn)代碼

    利用PyQt5+Matplotlib 繪制靜態(tài)/動態(tài)圖的實現(xiàn)代碼

    這篇文章主要介紹了利用PyQt5+Matplotlib 繪制靜態(tài)/動態(tài)圖的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07

最新評論

卢湾区| 凌云县| 平安县| 郧西县| 兴化市| 祁阳县| 黔东| 五家渠市| 沅陵县| 滨州市| 始兴县| 通渭县| 临潭县| 蓬溪县| 淮南市| 达日县| 忻城县| 娄底市| 昭通市| 新蔡县| 临沭县| 高碑店市| 体育| 肥东县| 灵武市| 六安市| 澳门| 本溪| 永德县| 都匀市| 梅河口市| 宣恩县| 贺兰县| 云安县| 蒲城县| 屏边| 射洪县| 调兵山市| 杨浦区| 上杭县| 界首市|