使用Python實(shí)現(xiàn)有趣的鎖屏小工具
寫(xiě)在前面
之前在公司,畢竟是干安全的,部門(mén)有這么一個(gè)要求,被發(fā)現(xiàn)不鎖屏的,請(qǐng)全部門(mén)喝奶茶。很不幸,我也出現(xiàn)過(guò)忘了鎖屏然后被發(fā)現(xiàn)的情況。自此之后,我就形成了肌肉記憶,同時(shí)也對(duì)別人不鎖屏很敏感。
為什么要強(qiáng)調(diào)鎖屏呢?你也不想你的電腦被別人操作吧,也不想自己的信息被別人獲取吧。畢竟防人之心不可無(wú)。
自打跳槽到新公司之后,每次去廁所的路上就看到有人電腦不鎖屏,真的是令我無(wú)比的糾結(jié)。鎖個(gè)屏幕有那么難嗎?確實(shí)很難,有時(shí)候一忙就容易忘,于是我就想實(shí)現(xiàn)一個(gè)離開(kāi)電腦自動(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)類(lèi)型 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()
代碼里都做好了注釋?zhuān)芎?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+Empyrical實(shí)現(xiàn)計(jì)算風(fēng)險(xiǎn)指標(biāo)
Empyrical 是一個(gè)知名的金融風(fēng)險(xiǎn)指標(biāo)庫(kù)。它能夠用于計(jì)算年平均回報(bào)、最大回撤、Alpha值等。下面就教你如何使用 Empyrical 這個(gè)風(fēng)險(xiǎn)指標(biāo)計(jì)算神器2022-05-05Python中利用sqrt()方法進(jìn)行平方根計(jì)算的教程
這篇文章主要介紹了Python中利用sqrt()方法進(jìn)行平方根計(jì)算的教程,是Python學(xué)習(xí)的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-05-05python3.5 email實(shí)現(xiàn)發(fā)送郵件功能
這篇文章主要為大家詳細(xì)介紹了python3.5 email實(shí)現(xiàn)發(fā)送郵件功能,包含txt、圖片、HTML、附件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-05-05Python對(duì)字符串實(shí)現(xiàn)去重操作的方法示例
字符串去重是python中字符串操作常見(jiàn)的一個(gè)需求,最近在工作中就又遇到了,所以下面這篇文章主要給大家介紹了關(guān)于Python對(duì)字符串實(shí)現(xiàn)去重操作的相關(guān)資料,文中給出了詳細(xì)的介紹,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-08-08關(guān)于自動(dòng)化測(cè)試框架pytest的Fixture固件
這篇文章主要介紹了關(guān)于自動(dòng)化測(cè)試框架pytest的Fixture固件,Fixture它其實(shí)就是一些函數(shù),會(huì)在執(zhí)行測(cè)試方法/測(cè)試函數(shù)前后加載運(yùn)行它們,需要的朋友可以參考下2023-03-03利用Opencv中Houghline方法實(shí)現(xiàn)直線檢測(cè)
這篇文章主要為大家詳細(xì)介紹了利用Opencv中的Houghline方法進(jìn)行直線檢測(cè),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02