使用Python實現(xiàn)有趣的鎖屏小工具
寫在前面
之前在公司,畢竟是干安全的,部門有這么一個要求,被發(fā)現(xiàn)不鎖屏的,請全部門喝奶茶。很不幸,我也出現(xiàn)過忘了鎖屏然后被發(fā)現(xiàn)的情況。自此之后,我就形成了肌肉記憶,同時也對別人不鎖屏很敏感。
為什么要強(qiáng)調(diào)鎖屏呢?你也不想你的電腦被別人操作吧,也不想自己的信息被別人獲取吧。畢竟防人之心不可無。
自打跳槽到新公司之后,每次去廁所的路上就看到有人電腦不鎖屏,真的是令我無比的糾結(jié)。鎖個屏幕有那么難嗎?確實很難,有時候一忙就容易忘,于是我就想實現(xiàn)一個離開電腦自動鎖屏的程序。
分析
這玩意實現(xiàn)也不難,簡單思考一下,就是讓電腦檢測人在不在電腦前面,那就是要試試捕獲攝像頭了,然后設(shè)置一個間隔時間,每隔一段時間截取圖片,做人臉識別,沒有人臉了就鎖屏就行了。
涉及到攝像頭圖片處理,直接讓人聯(lián)想到opencv,然后再用python實現(xiàn)上面的一套邏輯,就搞定。
代碼
安裝opencv的庫
pip install opencv-python
直接上代碼:
import cv2 import time import os import platform # 檢測操作系統(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的人臉檢測模型 face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml') # 無人狀態(tài)計時器 no_person_timer = 0 # 設(shè)定無人狀態(tài)時間閾值 NO_PERSON_THRESHOLD = 3 # 檢測操作系統(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 # 如果超過閾值,則鎖屏 if no_person_timer > NO_PERSON_THRESHOLD: lock_screen(os_type) no_person_timer = 0 time.sleep(1) cap.release()
代碼里都做好了注釋,很簡單,因為windows和macOS的鎖屏指令不一樣,所以做了個簡單的系統(tǒng)平臺判斷。
可以完美執(zhí)行,就是它得一直調(diào)用攝像頭,應(yīng)該也不會有人真的使用這玩意吧,hhh。
到此這篇關(guān)于使用Python實現(xiàn)有趣的鎖屏小工具的文章就介紹到這了,更多相關(guān)Python鎖屏內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python+Empyrical實現(xiàn)計算風(fēng)險指標(biāo)
Empyrical 是一個知名的金融風(fēng)險指標(biāo)庫。它能夠用于計算年平均回報、最大回撤、Alpha值等。下面就教你如何使用 Empyrical 這個風(fēng)險指標(biāo)計算神器2022-05-05Python中利用sqrt()方法進(jìn)行平方根計算的教程
這篇文章主要介紹了Python中利用sqrt()方法進(jìn)行平方根計算的教程,是Python學(xué)習(xí)的基礎(chǔ)知識,需要的朋友可以參考下2015-05-05python3.5 email實現(xiàn)發(fā)送郵件功能
這篇文章主要為大家詳細(xì)介紹了python3.5 email實現(xiàn)發(fā)送郵件功能,包含txt、圖片、HTML、附件,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05關(guān)于自動化測試框架pytest的Fixture固件
這篇文章主要介紹了關(guān)于自動化測試框架pytest的Fixture固件,Fixture它其實就是一些函數(shù),會在執(zhí)行測試方法/測試函數(shù)前后加載運(yùn)行它們,需要的朋友可以參考下2023-03-03利用Opencv中Houghline方法實現(xiàn)直線檢測
這篇文章主要為大家詳細(xì)介紹了利用Opencv中的Houghline方法進(jìn)行直線檢測,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-02-02