Python 调用摄像头并发送截图至邮箱的实现原理与打包教程

Cora
Cora
发布时间:2026-10-14| 5人浏览过
原创

本文介绍如何使用 Python 的 OpenCV 库调用摄像头拍摄照片,并结合 SMTP 协议将截图自动发送至指定邮箱。教程涵盖环境配置、核心代码逻辑解析、QQ 邮箱授权码获取方法,以及使用 PyInstaller 将脚本打包为独立可执行文件(exe)的完整步骤,便于程序分发与运行。

Python 调用摄像头并发送邮箱的实现原理与打包教程

Python 调用摄像头截图并发送邮箱的实现示例及程序打包教程

环境配置与依赖安装

本教程旨在展示如何利用 Python 编写一个能够调用本地摄像头拍摄照片,并将照片自动发送至指定邮箱的程序。首先,请确保计算机已安装 Python 3.5 或更高版本,可从 Python 官网下载并安装。随后,需要安装图像处理库 opencv-python。在终端或命令行中执行安装命令即可。为提高下载速度,建议在 pip 命令中添加清华镜像源参数 -i https://pypi.tuna.tsinghua.edu.cn/simple,以便从国内镜像服务器快速获取所需依赖库。


pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple/

核心代码逻辑与配置说明

以下是具体的代码实现及详细注释。用户需根据实际需求修改代码中的发件人邮箱、收件人邮箱以及对应的 SMTP 授权码。完成代码编写后,可将 .py 脚本文件打包为 .exe 可执行文件,从而生成无需安装 Python 环境即可运行的独立程序,方便分发给他人使用。


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 = '****************'      # 授权码
  from_qq_mail = 'QQ@qq.com'     # 发件人
  to_qq_mail = 'QQ@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')   # 删除本地照片

邮箱授权码获取指南

获取邮箱授权码的方法如下:登录邮箱网页版,进入设置界面,找到账户选项,开启 POP3/SMTP 服务功能。按照提示完成密保验证后,系统会生成一串 16 位的授权码,请妥善保存该授权码用于程序登录验证。





程序打包步骤详解

程序打包步骤如下: 1. 首先安装 PyInstaller 库,在终端中输入命令 pip install pyinstaller 即可完成安装。 2. 确定目标脚本文件所在路径。使用 cd 命令切换目录较为繁琐,推荐一种简便方法:在文件资源管理器的地址栏直接输入 cmd 并回车,即可在当前路径下打开终端,此时当前目录即为目标路径。

3.

执行打包命令,在终端中输入相应的 PyInstaller 指令。


pyinstaller --console --onefile 7.py //这里打包的是一个叫7.py的文件。

打包完成后,在项目目录下的 dist 文件夹中即可找到生成的可执行文件。



功能测试与结果验证

最后进行功能测试,运行程序后,收件人邮箱将收到一封包含附件的邮件。附件通常具有 .bin 后缀,用户可将其后缀名修改为 .jpg,即可使用图片查看器打开并预览拍摄的照片。

至此,关于 Python 调用摄像头并发送截图的实现示例及打包教程介绍完毕。如需了解更多相关内容,可搜索本站过往文章或继续浏览后续更新。感谢支持!

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。