别再忘了锁屏,几行代码写一个人走屏锁小工具

写在前面

之前在公司,毕竟是干安全的,部门有这么一个要求,被发现不锁屏的,请全部门喝奶茶。很不幸,我也出现过忘了锁屏然后被发现的情况。自此之后,我就形成了肌肉记忆,同时也对别人不锁屏很敏感。

为什么要强调锁屏呢?你也不想你的电脑被别人操作吧,也不想自己的信息被别人获取吧。毕竟防人之心不可无。

自打跳槽到新公司之后,每次去厕所的路上就看到有人电脑不锁屏,真的是令我无比的纠结。锁个屏幕有那么难吗?确实很难,有时候一忙就容易忘,于是我就想实现一个离开电脑自动锁屏的程序。

分析

这玩意实现也不难,简单思考一下,就是让电脑检测人在不在电脑前面,那就是要试试捕获摄像头了,然后设置一个间隔时间,每隔一段时间截取图片,做人脸识别,没有人脸了就锁屏就行了。

涉及到摄像头图片处理,直接让人联想到opencv,然后再用python实现上面的一套逻辑,就搞定。

代码

安装opencv的库

bash 复制代码
pip install opencv-python

直接上代码:

python 复制代码
import cv2
import time
import os
import platform

# 检测操作系统
def detect_os():
    os_name = platform.system()
    if os_name == 'Windows':
        return 'windows'
    elif os_name == 'Darwin':
        return 'mac'
    else:
        return 'other'

# 执行锁屏命令
def lock_screen(os_type):
    if os_type == 'windows':
        os.system('rundll32.exe user32.dll, LockWorkStation')
    elif os_type == 'mac':
        os.system('/System/Library/CoreServices/"Menu Extras"/User.menu/Contents/Resources/CGSession -suspend')
    

# 初始化摄像头
cap = cv2.VideoCapture(0)

# 载入OpenCV的人脸检测模型
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')

# 无人状态计时器
no_person_timer = 0
# 设定无人状态时间阈值
NO_PERSON_THRESHOLD = 3

# 检测操作系统类型
os_type = detect_os()

while True:
    ret, frame = cap.read()
    if not ret:
        break

    # 转换为灰度图像
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, 1.1, 4)

    if len(faces) == 0:
        no_person_timer += 1
    else:
        no_person_timer = 0

    # 如果超过阈值,则锁屏
    if no_person_timer > NO_PERSON_THRESHOLD:
        lock_screen(os_type)
        no_person_timer = 0

    time.sleep(1)

cap.release()

代码里都做好了注释,很简单,因为windows和macOS的锁屏指令不一样,所以做了个简单的系统平台判断。

可以完美执行,就是它得一直调用摄像头,应该也不会有人真的使用这玩意吧,hhh。

相关推荐
源码之家1 分钟前
基于python租房大数据分析系统 房屋数据分析推荐 scrapy爬虫+可视化大屏 贝壳租房网 计算机毕业设计 推荐系统(源码+文档)✅
大数据·爬虫·python·scrapy·数据分析·推荐算法·租房
源码之家6 分钟前
机器学习:基于python租房推荐系统 预测算法 协同过滤推荐算法 房源信息 可视化 机器学习-线性回归预测模型 Flask框架(源码+文档)✅
大数据·python·算法·机器学习·数据分析·线性回归·推荐算法
循环过三天9 分钟前
7.7、Python-常用内置函数
笔记·python·学习
闲人编程35 分钟前
【指南】为你的开源Python项目编写完善的文档(Sphinx)
python·开源·文档·sphinx·算法改进·codecapsule
T***160739 分钟前
免费的Web安全漏洞利用,Metasploit教程
安全·web安全
武汉唯众智创42 分钟前
职业院校网络安全靶场实训演练系统建设方案
网络·安全·web安全·网络安全·网络安全靶场实训演练系统·网络安全靶场实训·网络安全实训演练系统
盈创力和20071 小时前
北斗形变监测仪:高精度结构安全的“守护之眼”
安全·变形监测·地质灾害监测·北斗形变监测仪·楼宇变形监测·桥梁隧道公路变形监测·水利安全监测
奋进的电子工程师1 小时前
如何实现开源组件的安全与合规治理?
安全·开源·代码规范·设计规范·代码复审
没文化的程序猿1 小时前
如何降低淘宝商品详情API安全强化与生态协同创新的成本?
安全
Hello_WOAIAI1 小时前
4.2 python多线程编程:threading 模块深度解析
开发语言·python