Python控制自己的手机摄像头拍照,并把照片自动发送到邮箱

写在前面的一些P话:

今天这个案例,就是控制自己的摄像头拍照,并且把拍下来的照片,通过邮件发到自己的邮箱里。
想完成今天的这个案例,只要记住一个重点:你需要一个摄像头

思路

通过opencv调用摄像头拍照保存图像本地
用email库构造邮件内容,保存的图像以附件形式插入邮件内容
用smtplib库发送邮件到指定邮箱

开始代码

工具导入

import time import cv2  # pip install opencv-python -i 镜像源网址 from email.mime.image import MIMEImage  # 用来构造邮件内容的库 from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart import smtplib  # 发送邮件 

调用摄像头,保存图片

拍照呢,是用手机的摄像头,软件用的是:IP摄像头(安卓),因为在同一个局域网内,打开APP,里面出现的网址就是摄像头的地址

def GetPicture():          拍照保存图像     :return:          # 创建一个窗口     cv2.namedWindow('camera', 1)     # 调用摄像头   IP摄像头APP     video = http://admin:[email protected]:8081/video     cap = cv2.VideoCapture(video)     while True:         success, img = cap.read()         cv2.imshow(camera, img)         # 按键处理         key = cv2.waitKey(10)         if key == 27:             # esc             break         if key == 32:             # 空格             fileaname = 'frames.jpg'             cv2.imwrite(fileaname, img)      # 释放摄像头     cap.release()     # 关闭窗口     cv2.destroyWindow(camera) 

运行代码,就会出现效果
请添加图片描述
创建一个函数,设置一下我的邮件内容

def SetMsg():          邮件格式设置     :return:          msg = MIMEMultipart('mixed')     # 标题     msg['Subject'] = '小姐姐照片'     msg['From'] = sender  # 发送方邮箱     msg['To'] = receiver  # 接收方邮箱      # 邮件正文     text = '你要的小姐姐照片到了,请接收'     text_plain = MIMEText(text, 'plain', 'utf-8')  # 正文转码     msg.attach(text_plain)      # 图片附件     SendImageFile = open('D:/控制摄像头拍照并发送邮件/frames.jpg', 'rb').read()     image = MIMEImage(SendImageFile)      # 将收件人看见的附件照片名称改为people.png.     image['Content-Disposition'] = 'attachment; filename = people.png'     msg.attach(image)     return msg.as_string() 

邮件端口设置

授权码可以在这里领取
请添加图片描述

# 授权码 pwd = ******   # 最好写自己的  # 服务器接口 host = 'smtp.163.com' port = 25  sender = '[email protected]' # 最好写自己的 receiver = '[email protected]' # 最好写自己的  

发送邮件功能

def SendEmail(msg):          发送邮件     :param msg:邮件内容     :return:          smtp = smtplib.SMTP()     smtp.connect(host,port=25)     smtp.login(sender, pwd)     smtp.sendmail(sender, receiver, msg)     time.sleep(2)     smtp.quit() 

进行封装

if __name__ == '__main__':     # 1.拍照保存     GetPicture()     # 2.设置邮件格式     msg = SetMsg()     # 3.发送邮件     SendEmail(msg) 

运行代码,演示效果

先拍照
请添加图片描述
发送到了邮箱
请添加图片描述