使用Python實(shí)現(xiàn)有趣的鎖屏小工具
寫在前面
之前在公司,畢竟是干安全的,部門有這么一個(gè)要求,被發(fā)現(xiàn)不鎖屏的,請(qǐng)全部門喝奶茶。很不幸,我也出現(xiàn)過(guò)忘了鎖屏然后被發(fā)現(xiàn)的情況。自此之后,我就形成了肌肉記憶,同時(shí)也對(duì)別人不鎖屏很敏感。
為什么要強(qiáng)調(diào)鎖屏呢?你也不想你的電腦被別人操作吧,也不想自己的信息被別人獲取吧。畢竟防人之心不可無(wú)。
自打跳槽到新公司之后,每次去廁所的路上就看到有人電腦不鎖屏,真的是令我無(wú)比的糾結(jié)。鎖個(gè)屏幕有那么難嗎?確實(shí)很難,有時(shí)候一忙就容易忘,于是我就想實(shí)現(xiàn)一個(gè)離開電腦自動(dòng)鎖屏的程序。
分析
這玩意實(shí)現(xiàn)也不難,簡(jiǎn)單思考一下,就是讓電腦檢測(cè)人在不在電腦前面,那就是要試試捕獲攝像頭了,然后設(shè)置一個(gè)間隔時(shí)間,每隔一段時(shí)間截取圖片,做人臉識(shí)別,沒(méi)有人臉了就鎖屏就行了。
涉及到攝像頭圖片處理,直接讓人聯(lián)想到opencv,然后再用python實(shí)現(xiàn)上面的一套邏輯,就搞定。
代碼
安裝opencv的庫(kù)
pip install opencv-python
直接上代碼:
import cv2
import time
import os
import platform
# 檢測(cè)操作系統(tǒng)
def detect_os():
os_name = platform.system()
if os_name == 'Windows':
return 'windows'
elif os_name == 'Darwin':
return 'mac'
else:
return 'other'
# 執(zhí)行鎖屏命令
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的人臉檢測(cè)模型
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')
# 無(wú)人狀態(tài)計(jì)時(shí)器
no_person_timer = 0
# 設(shè)定無(wú)人狀態(tài)時(shí)間閾值
NO_PERSON_THRESHOLD = 3
# 檢測(cè)操作系統(tǒng)類型
os_type = detect_os()
while True:
ret, frame = cap.read()
if not ret:
break
# 轉(zhuǎn)換為灰度圖像
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
# 如果超過(guò)閾值,則鎖屏
if no_person_timer > NO_PERSON_THRESHOLD:
lock_screen(os_type)
no_person_timer = 0
time.sleep(1)
cap.release()
代碼里都做好了注釋,很簡(jiǎn)單,因?yàn)閣indows和macOS的鎖屏指令不一樣,所以做了個(gè)簡(jiǎn)單的系統(tǒng)平臺(tái)判斷。
可以完美執(zhí)行,就是它得一直調(diào)用攝像頭,應(yīng)該也不會(huì)有人真的使用這玩意吧,hhh。
到此這篇關(guān)于使用Python實(shí)現(xiàn)有趣的鎖屏小工具的文章就介紹到這了,更多相關(guān)Python鎖屏內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python?replace?空格數(shù)據(jù)處理的實(shí)現(xiàn)
本文主要介紹了python?replace?空格數(shù)據(jù)處理的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
Python 數(shù)據(jù)類型從基礎(chǔ)到幕后(實(shí)例代碼詳解)
在Python中,數(shù)據(jù)類型是編程語(yǔ)言中非常重要的一部分,它們決定了變量可以存儲(chǔ)的數(shù)據(jù)類型和可以進(jìn)行哪些操作,本文介紹Python數(shù)據(jù)類型從基礎(chǔ)到幕后,感興趣的朋友跟隨小編一起看看吧2026-06-06
Python圖片文字識(shí)別與提取實(shí)戰(zhàn)記錄
這篇文章主要介紹了Python圖片文字識(shí)別與提取的相關(guān)資料,本文介紹了如何安裝和配置OCR環(huán)境,包括安裝pytesseract擴(kuò)展包、窗口配套軟件以及配置環(huán)境變量,在完成環(huán)境搭建后,即可進(jìn)行圖片中文字的提取,需要的朋友可以參考下2024-09-09
Python項(xiàng)目目錄找不到.git文件怎么刪除
這篇文章主要介紹了Python項(xiàng)目目錄找不到.git文件怎么刪除的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
Flask框架Jinjia模板常用語(yǔ)法總結(jié)
這篇文章主要介紹了Flask框架Jinjia模板常用語(yǔ)法,結(jié)合實(shí)例形式總結(jié)分析了Jinjia模板的變量、賦值、流程控制、函數(shù)、塊、宏等基本使用方法,需要的朋友可以參考下2018-07-07
Python中random.choice()函數(shù)的使用
random.choice()?是 Python 標(biāo)準(zhǔn)庫(kù)?random?模塊中的一個(gè)函數(shù),用于從一個(gè)?非空序列?中?隨機(jī)選擇一個(gè)元素,本文主要介紹了Python中random.choice()函數(shù)的使用,具有一定的參考價(jià)值,感興趣的可以了解一下2025-04-04

