❤️用Python开启摄像头截屏后回传到指定邮箱!❤️

今天二哥突发奇想,想尝试使用Python来调用摄像头自拍并截屏回传到邮箱中保存,来记录下自己工作的桌面和工作的状态,本文我们一起来了解一下。
老规矩!先点个赞吧…

一、开启摄像头

使用cv2(opencv)可以很轻松的达到开启摄像头的效果,开启摄像头的代码如下所示:

import cv2

# 参数0表示内置摄像头,1表示其他
cap = cv2.VideoCapture(0)
ret, frame = cap.read()
# 开启摄像头
cv2.imshow('cv window', frame)
# 持续一段时间(可以增大)
cv2.waitKey(1000)
cap.release()
cv2.destroyAllWindows()
# 防止窗口卡死
cv2.waitKey(1)

二、截取屏幕

开启了摄像头之后,我们可以使用pyautogui来快速的对屏幕进行截屏。
截屏代码如下所示:

import pyautogui

# 截取屏幕
img = pyautogui.screenshot()
img.save('screenshot.png')

三、发送邮件

在email库中提供了发送带图片邮件的方法,发送邮件的代码如下:

# 用于构造带图片的邮件
from email.mime.multipart import MIMEMultipart
# 用于封装附件
from email.mime.application import MIMEApplication
import smtplib

# 给定发送者邮箱
from_addr = 'your_email@xxx.com'
# 给定发送者密码
password = 'your_password'
# 给定SMTP服务器地址
smtp_server = 'your_server'
# 给定收件人地址
to_addr = 'send_email@xxx.com'

msg = MIMEMultipart()
part = MIMEApplication(open('screenshot.png', 'rb').read())
msg.attach(part)

server = smtplib.SMTP(smtp_server, 25)  # SMTP协议默认端口是25
# server.set_debuglevel(1)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string())

server.quit()

这里我们需要填入邮箱的账号、密码、服务器地址、发送账号四种信息,对于账号来说,我们填入普通的邮箱即可,而这里的密码不是我们注册时用的密码,而是一个独立的从服务器发送所需的密码,这里以qq为例,看一下如何获取密码。

  • 如图所示先点击设置,再点击账户。
    在这里插入图片描述
  • 下拉找到服务器选项,开启第一个选项即可。

在这里插入图片描述开启后即可获取到密码了。
对于STMP服务器地址,我们使用的哪个邮箱就查找哪个邮箱的地址即可,例如QQ邮箱地址:smtp.qq.com

注意,邮箱收到的照片需要将后缀改成.png、.jpg等图像格式。

四、打包程序

我们可以使用pyinstaller脚本来将代码打包成exe文件,注意需要使用win系统,打包方式如下:

  1. 安装pyinstaller:pip install pyinstaller
  2. 进入程序所在目录
  3. 使用命令打包文件:pyinstaller -F xxx.py(xxx.py,打包的文件)
  4. 去新生成的dist文件夹下找到exe文件

打包完成之后,点击运行就可以了。
完整的代码如下所示:

import cv2
import pyautogui
# 用于构造带图片的邮件
from email.mime.multipart import MIMEMultipart
# 用于封装附件
from email.mime.application import MIMEApplication
import smtplib

cap = cv2.VideoCapture(0)


ret, frame = cap.read()
cv2.imshow('cv window', frame)
    # 按q退出程序
cv2.waitKey(1000)
# 截取屏幕
img = pyautogui.screenshot()
img.save('screenshot.png')
cap.release()
cv2.destroyAllWindows()
# 防止窗口卡死
cv2.waitKey(1)

# 给定发送者邮箱
from_addr = 'your_email@xxx.com'
# 给定发送者密码
password = 'your_password'
# 给定SMTP服务器地址
smtp_server = 'your_server'
# 给定收件人地址
to_addr = 'send_email@xxx.com'

msg = MIMEMultipart()
part = MIMEApplication(open('screenshot.png', 'rb').read())
msg.attach(part)

server = smtplib.SMTP(smtp_server, 25)  # SMTP协议默认端口是25
# server.set_debuglevel(1)
server.login(from_addr, password)
server.sendmail(from_addr, [to_addr], msg.as_string())

server.quit()

❤️创作不易,点个赞吧❤️
  • 15
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

二哥不像程序员

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

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

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

打赏作者

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

抵扣说明:

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

余额充值