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

本文介绍了如何使用Python结合OpenCV和pyautogui开启摄像头、截取屏幕,并通过email库发送带有截图的邮件。首先,通过cv2读取摄像头画面并显示,然后使用pyautogui进行屏幕截图,接着配置SMTP服务器信息发送邮件。最后,文章提到了如何使用pyinstaller将程序打包成exe文件。
摘要由CSDN通过智能技术生成

今天二哥突发奇想,想尝试使用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
    评论
要使用Python调用摄像头进行截屏,你可以使用OpenCV库来实现。根据你提供的代码,你需要确保你已经正确安装了OpenCV库。 以下是一个示例代码,可以帮助你实现这个功能: ``` python import cv2 cap = cv2.VideoCapture(0) # 打开摄像头,0是默认的摄像头,如果你有多个摄像头,可以设置为1,2,3... while True: ret, frame = cap.read() # 读取摄像头拍摄到的图像 frame = cv2.flip(frame, 1) # 将图像左右翻转,以正常显示 cv2.imshow('video', frame) # 显示图像 # 按下 's' 键保存截图 if cv2.waitKey(1) & 0xFF == ord('s'): cv2.imwrite("screenshot.png", frame) # 保存截图指定文件 # 按下 'q' 键退出循环 if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() # 释放摄像头资源 cv2.destroyAllWindows() # 关闭窗口 ``` 在上述代码中,使用`cap.read()`读取摄像头拍摄到的图像,然后使用`cv2.flip()`函数将图像进行左右翻转以正常显示。通过`cv2.imshow()`函数,将图像显示在一个名为'video'的窗口中。当你按下 's' 键时,通过`cv2.imwrite()`函数保存截图指定文件。按下 'q' 键时,则退出循环,释放摄像头资源并关闭窗口。 你可以根据自己的需求修改代码中的保存截图的文件名和路径。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [python opencv打开摄像头截图保存](https://blog.csdn.net/young_girl_86/article/details/126046211)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

二哥不像程序员

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

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

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

打赏作者

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

抵扣说明:

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

余额充值