【Python入门教程】调取电脑摄像头并发送照片至邮箱

        OpenCV 是一个大型的开源计算机视觉库,涵盖了计算机视觉的各个方面, 主要功能包括:图像处理如缩放、裁剪、旋转、颜色转换等;视频分析如运动检测、跟踪、分类等;图像分类如人脸识别、文本识别等;图像识别如物体识别、模式识别等。

        email 包是用于处理复杂的电子邮件处理任务。它可以读取、编写和发送电子邮件。email 包遵循 RFC,支持 RFC 5233 和 RFC 6532,以及与 MIME 相关的各个 RFC 例如 RFC 2045, RFC 2046, RFC 2047等。

本博文纯属娱乐,仅供大家学习参考,不得以此触犯他人隐私。本篇文章参考Python研究者的python发送摄像头的图片。在这里先感谢大佬的付出,大家可以去关注一下。

一、获取邮箱授权码

        授权码用于调用邮箱实现邮件的发送,这里以QQ邮箱做演示,在设置的账户中找到POP3/ IMAP /SMTP / Exchange/ CardDAV/CalDAV服务,开启该服务后获取授权码。

 二、导入三方库

import os
import cv2
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage

 三、代码部分

1.获取本地摄像头图片

        通过opencv的VideoCapture函数抓取本地摄像头的图片。VideoCapture还可以解析本地视频、获取RSMP等地址的网络视频,大家可以自行查阅opencv的帮助文档查看。(PS:opencv库真的很强大)

def Get_photo():
    cap = cv2.VideoCapture(0)
    # 从摄像头获取视频
    f, frame = cap.read()
    # 逐帧打开视频
    cv2.imwrite('image.jpg', frame)
    # 将图片保存为本地文件
    cap.release()
    # 关闭摄像头

2.将图片发送至邮箱

        这里的部分,我已经给出了注释就不讲解了。最重要的是这方面博主不太擅长,主要还是靠大佬的帮助,在这里再次膜拜大佬。

def Send_photo(sender, receiver, code1):
    """
    :param sender: 发送者邮箱
    :param receiver: 接收者邮箱
    :param code1: 发送者邮箱授权码
    :return:
    """
    message = MIMEMultipart('related')
    # 创建消息对象
    subject = '技术信息获取'
    # 邮件标题
    message['Subject'] = subject
    message['From'] = sender
    message['To'] = receiver
    content = MIMEText('<html><body><img src="cid:imageid" alt="imageid"></body></html>', 'html', 'utf-8')
    message.attach(content)
    # 创建一个HTML文本对象,其中包含一个图像id
    file = open("image.jpg", "rb")
    img_data = file.read()
    file.close()
    # 打开图片读入内存
    img = MIMEImage(img_data)
    # 创建图像的MIME类型
    img.add_header('Content-ID', 'imageid')
    message.attach(img)
    try:
        server = smtplib.SMTP_SSL("smtp.qq.com", 465)
        server.login(sender, code1)
        # 邮箱授权码
        server.sendmail(sender, receiver, message.as_string())
        server.quit()
        print("邮件发送成功")
        os.remove('image.jpg')  # 删除本地照片
    except smtplib.SMTPException as e:
        print(e)

四、完整代码

# -*- coding: utf-8 -*-
"""
@Time : 2023/6/1 15:29
@Auth : RS迷途小书童
@File :Get_Webcam.py
@IDE :PyCharm
@Purpose :获取电脑摄像头拍照,并发送邮箱
"""
import os
import cv2
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.image import MIMEImage


def Get_photo():
    cap = cv2.VideoCapture(0)
    # 从摄像头获取视频
    f, frame = cap.read()
    # 逐帧打开视频
    cv2.imwrite('image.jpg', frame)
    # 将图片保存为本地文件
    cap.release()
    # 关闭摄像头


def Send_photo(sender, receiver, code1):
    """
    :param sender: 发送者邮箱
    :param receiver: 接收者邮箱
    :param code1: 发送者邮箱授权码
    :return:
    """
    message = MIMEMultipart('related')
    # 创建消息对象
    subject = '技术信息获取'
    # 邮件标题
    message['Subject'] = subject
    message['From'] = sender
    message['To'] = receiver
    content = MIMEText('<html><body><img src="cid:imageid" alt="imageid"></body></html>', 'html', 'utf-8')
    message.attach(content)
    # 创建一个HTML文本对象,其中包含一个图像id
    file = open("image.jpg", "rb")
    img_data = file.read()
    file.close()
    # 打开图片读入内存
    img = MIMEImage(img_data)
    # 创建图像的MIME类型
    img.add_header('Content-ID', 'imageid')
    message.attach(img)
    try:
        server = smtplib.SMTP_SSL("smtp.qq.com", 465)
        server.login(sender, code1)
        # 邮箱授权码
        server.sendmail(sender, receiver, message.as_string())
        server.quit()
        print("邮件发送成功")
        os.remove('image.jpg')  # 删除本地照片
    except smtplib.SMTPException as e:
        print(e)


if __name__ == "__main__":
    send = '**********@qq.com'
    # 发送者邮箱
    receive = '*********@qq.com'
    # 接收者邮箱
    code = "********"
    # 授权码
    Get_photo()
    # 获取图片
    Send_photo(send, receive, code)
    # 发送图片

        本文章主要是分享个人在学习Python过程中写过的一些代码。有些部分参考了前人以及官网的教程,如有侵权请联系作者删除,大家有问题可以随时留言交流,博主会及时回复。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RS迷途小书童

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值