python 摄像头运用(使用Python控制摄像头拍照并发邮件)
python 摄像头运用
使用Python控制摄像头拍照并发邮件o1 前言为什么会有写这个程序的想法呢?
最初的想法是写一个可以用电脑前置摄像头拍照的程序,在舍友使用你电脑的时候,不经意间获取到一大堆奇葩舍友的表情包。
然后我又突发奇想,要不搞个开机启动吧,这样我就可以看到是谁开启了我的电脑啦。
然后,突(nao)发(dong)奇(da)想(kai)的我又想到万一我电脑不在身边怎么办?要不再加个邮件发送机制吧,开机拍到照片再邮件发送给我?哈哈
02 工具
•deepin 15.9
•好看好用的国产linux系统
•python 2.7或者3.6
•解释器,哪个版本都可以,我选择3.6
•smtplib
•用来发送邮件
•email
•用来构造邮件内容的库
•opencv
•用来调取摄像头拍摄照片
•time
•获取开机以及拍照的时间
•os
•判断网络连接
•获取脚本路径
•sys
•判断网络是否联通
•1.用opencv库调用摄像头拍照保存为文件。
•2.检查网络是否连接,未连接则图片保存到本地。
•3.用email库构造邮件内容,把保存的照片以附件的形式插入到邮件内容中。
•4.用smtplib库发送邮件给指定邮件接收者。
•5.实现脚本开机自启动。
首先当然是安装opencv啦。
其他的email、smtplib、sys、os、time为python默认安装的包,我们只需要导入即可。
如果是python3.6安装opencv就在终端输入:
pip3 install opencv-python
如果是python2.7安装opencv,就在终端输入:
pip install opencv-python
安装完成后,我们导入必要的包。
各个包的作用在前文已经讲过,不再多言。
email 我们只需要部分功能,所以选择性导入
|
import cv2 import smtplib import sys import os import time from email.mime.image import mimeimage from email.mime.multipart import mimemultipart from email.mime.text import mimetext |
将smtp服务器,登录邮箱账号及密码,收件人,脚本路径等设置为全局变量。方便以后程序移植与修改。
|
smtpserver = 'smtp.163.com' # smtp服务器 username = '888888888@163.com' # 发件邮箱账号 password = '888888888' # 邮箱登录密码 sender = '888888888@163.com' # 发件人 addressee = '999999999@qq.com' # 收件人 exit_count = 5 # 尝试联网次数 path = os.getcwd() #获取图片保存路径 |
注:很多邮箱为了安全起见,不会使用真实的登录密码,而是要使用授权码,在qq邮箱的设置里面可以找到生成授权码选项。
06 实现拍照
|
def getpicture(): cap = cv2.videocapture( 0 ) ret, frame = cap.read() cv2.imwrite(path + '/person.jpg' , frame) # 关闭摄像头 cap.release() |
|
def setmsg(): # 下面依次为邮件类型,主题,发件人和收件人。 msg = mimemultipart( 'mixed' ) msg[ 'subject' ] = '电脑已经启动' msg[ 'from' ] = '88888888888@163.com <88888888888@163.com>' msg[ 'to' ] = addressee # 下面为邮件的正文 text = "主人,你的电脑已经开机! 照片如下!" text_plain = mimetext(text, 'plain' , 'utf-8' ) msg.attach(text_plain) # 构造图片链接 sendimagefile = open (path + '/person.jpg' , 'rb' ).read() image = mimeimage(sendimagefile) # 下面一句将收件人看到的附件照片名称改为people.png。 image[ "content-disposition" ] = 'attachment; filename="people.png"' msg.attach(image) return msg.as_string() |
|
def sendemail(msg): # 发送邮件 smtp = smtplib.smtp() smtp.connect( 'smtp.163.com' ) smtp.login(username, password) smtp.sendmail(sender, addressee, msg) smtp.quit() |
判断网络联通状态的方法很多,我采用很简单很直接的ping。
|
# 判断网络是否联通,成功返回0,不成功返回1 # linux中ping命令不会自动停止,需要加入参数 -c 4,表示在发送指定数目的包后停止。 def islink(): return os.system( 'ping -c 4 www.baidu.com' ) # return os.system('ping www.baidu.com') |
如果网络连接正常,则拍照发邮件。
如果网络未连接,等待十秒钟再次测试,如果等待次数超过设置的最大次数,程序退出。
|
def main(): reconnect_times = 0 while islink(): time.sleep( 10 ) reconnect_times + = 1 if reconnect_times = = exit_count: sys.exit() getpicture() msg = setmsg() sendemail(msg) |
首先要写一个开机自启脚本,文件名为:autostart.sh
脚本内容为
|
#切换到我们获取照片和发送邮件的工作目录 cd / home / projects / sendemail #执行发送邮件的脚本 python2 sendemile.py |
然后 在/etc/rc.local最后添加一行
./home/projects/sendemail/autostart.sh
大功告成。
10 重启系统代码都写好了,重启系统就可以收到邮件啦。
总结
以上所述是小编给大家介绍的使用python控制摄像头拍照并发邮件,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对开心学习网网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!原文链接:https://blog.csdn.net/qq_42156420/article/details/89334231
- python怎么自动刷抖音(python实现抖音点赞功能)
- pythonturtle库画图代码(用Python中的turtle模块画图两只小羊方法)
- python中怎么实现登录程序(详解Python用户登录接口的方法)
- python函数基本操作(Python定义函数功能与用法实例详解)
- python程序开发过程(python调用外部程序的实操步骤)
- python实用教程(Python简直是万能的,这5大主要用途你一定要知道!推荐)
- python的基础数据结构有哪些(详解python的四种内置数据结构)
- python编写自动发送微信信息(python实现向微信用户发送每日一句 python实现微信聊天机器人)
- python的静态方法和类方法(深入解析python中的实例方法、类方法和静态方法)
- python菜单栏中常用的菜单(Python3实现的简单三级菜单功能示例)
- python异常值处理(一篇文章带你弄懂Python异常传递和自定义异常)
- pythonsql注入检测(Python版Mssql爆破小脚本)
- nginxpython编写模块(Python开发之Nginx+uWSGI+virtualenv多项目部署教程)
- 如何用python编写抽奖(详解用python写一个抽奖程序)
- pythonselenium查看当前页面元素(python+selenium 定位到元素,无法点击的解决方法)
- python人脸识别库(python3人脸识别的两种方法)
- 到了岁末 临门一脚 节点,天台综合督评会目标直指 全年红(到了岁末临门一脚)
- 寒假余额不满24小时,不如来一场说走就走的亲子阅读之旅(寒假余额不满24小时)
- 省委书记出席的交流会,十位县委书记同场发言,代表公文材料的高水平(省委书记出席的交流会)
- 《刘老根3》热播,去世15年的她却再次被 伤害(去世15年的她却再次被)
- 十二星座爱情支配欲指数(十二星座爱情支配欲指数)
- 虐待儿童是发泄支配欲的愚蠢行为(虐待儿童是发泄支配欲的愚蠢行为)
热门推荐
- sql常见的聚合函数有哪些(SQL中的开窗函数详解可代替聚合函数使用)
- dockerfile镜像案例(Dockerfile构建自定义镜像的实现)
- jquery鼠标滑过显示提示框
- php class使用场景(php反射学习之不用new方法实例化类操作示例)
- phpstudy报错(phpStudy运行帝国备份王出错解决方法)
- python将对象转换成json(python对象与json相互转换的方法)
- meta标签中viewport
- mysql的binlog几种模式(MySQL系列之redo log、undo log和binlog详解)
- canvas如何保存当前的图片(canvas如何实现多张图片编辑的图片编辑器)
- laravel服务器设置教程(laravel框架模型、视图与控制器简单操作示例)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9