Windows 半“智能”电源管理
(本软件会调用摄像头, 有摄像头使用需求的,就用不了了 )
1.如题:先讲述一下制作原因(小作文)!
:PC的电源管理设置就比较呆板,几个挡可选,但又不是刻意的在笔记本前使用,
有时离开电脑,屏幕却亮着,而有时人在电脑前,屏幕却黑了!(这就很令人烦恼)
:所以最近突发奇想,制作了这个程序 / (当然也与本人的强迫症有关/ 哥几个就别杠了)
另外:什么U盘解锁,蓝牙设备解锁,人脸解锁,指纹解锁,.... 咱们那另说!!!
update_01: 2022/04/10 更新说明:
> 1.优化部分逻辑,调节部分代码结构!
> 2.内置有代码参数说明,全为必填关键参数,请按说明加入
> 3.启动的bat文件,修改时请注意编码格式为 Ansi, 不然cmd窗口内容会乱码(应不同电脑设置而异)
"剧照"
* 新文件同步更新至 网盘 和 GitHub,请留意!
(新版本代码未在116博客展示,请移步仓库查看)
2.制作思路与目前实现(在代码中也有相关注释!)
# 人像检测
ok
# 检测响应
# 1.设置超时!
# demo 细化检测时间
3-5 min 检测一次
设置检测方式(存在于检测灵敏的优化,)
人像检测的准确 /(合格性)
# 2.超时响应 (test)
# 5 min 熄屏/ 锁屏 cmd 下输入 rundll32.exe user32.dll LockWorkStation,可以启动屏幕保护功能
# 20 min 休眠 cmd shutdown -h 这条指令让计算机休眠(未测试!)
# ...True
3.代码展示!
3.1: --> rec_face.py : 本文件是检测人脸,返回结果就是True/False
(对象乱写的,海涵! 函数名乱写的, 海涵!)
[Python] 纯文本查看 复制代码
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
"""
@author: jingmo
@file: rec_face.py
@time: 2022/04/07 12:44:43
"""
import os
import time
import cv2
class Rec(object):
def rec_main(self, lm, out_key, out_time):
cap = cv2.VideoCapture(0) # Open camera one
success, frame = cap.read() # Read one frame
print("Camera open operation is: ", success)
classfier = cv2.CascadeClassifier(r".\haarcascades\haarcascade_frontalface_alt.xml")
# 计数检测
count_number = 0
time_start = time.time()
while success:
success, frame = cap.read()
size = frame.shape[:2] #
image2 = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) #
cv2.equalizeHist(image2, image2) #
divisor = 8
h, w = size
minSize = ((int)(w / divisor), (int)(h / divisor))
faceRects = classfier.detectMultiScale(image2, lm, 3, cv2.CASCADE_SCALE_IMAGE, minSize) # Face detect
if len(faceRects) > 0: # If face array length > 0
count_number += 1
# print(f"已检测!!{count_number}")
time_out = time.time()
# 时间取整
sleep_time = int(time_out - time_start)
# print(sleep_time)
if sleep_time >= out_time:
return False
if count_number >= out_key:
return True
if __name__ == '__main__':
rec = Rec().rec_main(lm=1.5, out_key=4, out_time=5)
print(rec)
print(type(rec))
3.2: --> face_repson.py : 本文件是对检测人脸,返回结果的操作
( 函数名乱写的, 海涵!)
3.2.1 :文件中有一段实验代码:希望有能力的大哥可以实现!
(锁屏状态下,程序输入密码,已测试回车有反应!但无法键入密码!)
3.2.1 :各函数的参数已文字说明,有条件的,感兴趣的可以增删改,创建个性化的操作,当然执行文件也会提供,不过个功能已写死(体验与日常够用)
[Python] 纯文本查看 复制代码
#!/usr/bin/python3
# -*- coding: UTF-8 -*-
"""
@author: jingmo
@file: face_repson.py
@time: 2022/04/07 12:14:53
"""
"""
# 人像检测
ok
# 检测响应
# 1.设置超时!
# demo 细化检测时间
3-5 min 检测一次
设置检测方式(存在于检测灵敏的优化,)
/ 人像检测的准确/(合格性)
# 2.超时响应 (test)
# 5 min 熄屏/ 锁屏 cmd 下输入 rundll32.exe user32.dll LockWorkStation,可以启动屏幕保护功能
# 20 min 休眠 cmd shutdown -h 这条指令让计算机休眠(未测试!)
# ...
"""
from rec_face import Rec
import time
import os
import win32api
def post_config(sleep_min, sleep_sleep, sleep_hide, lm, out_key, out_time):
# 暂停检测时间sleep_time(min)
sleep_time = sleep_min * 60
count_number = 0
while True:
# 灵敏度调节 lm人脸检测灵敏度, out_key人脸验证次数, out_time人脸检测超时(秒)
key = Rec().rec_main(lm=lm, out_key=out_key, out_time=out_time)
if key:
# 重置检测计数
count_number = 0
print("已检测到用户!")
# # 开始输入
# # 关于锁屏
# # 输入猜想(锁屏状态下,程序输入密码,已测试回车有反应!但无法键入密码!)
# time.sleep(0.5)
# # 回车
# win32api.keybd_event(13, 0, 0, 0)
# # 输入密码
# time.sleep(1.5)
# win32api.keybd_event(79, 0, 0, 0)
# time.sleep(0.5)
# win32api.keybd_event(80, 0, 0, 0)
# time.sleep(0.5)
# win32api.keybd_event(80, 0, 0, 0)
# time.sleep(0.5)
# win32api.keybd_event(79, 0, 0, 0)
# # 回车
# time.sleep(0.5)
# win32api.keybd_event(13, 0, 0, 0)
else:
# 未检测计数,达到sleep_sleep 设定次数,执行睡眠
# 未检测计数,达到sleep_hide 设定次数,执行休眠 / 否则锁屏
count_number += 1
print("检测计数:", count_number)
if count_number >= sleep_sleep:
print("执行睡眠")
os.popen("psshutdown.exe -d -t 0")
if count_number >= sleep_hide:
print("执行休眠")
# cmd的休眠指令:rundll32.exe powrProf.dll,SetSuspendState
os.popen("rundll32.exe powrProf.dll,SetSuspendState")
else:
print("执行锁屏")
# cmd的锁屏指令:rundll32.exe user32.dll LockWorkStation
os.popen("rundll32.exe user32.dll LockWorkStation")
for i in range(sleep_time, 0, -1):
time.sleep(1)
print(f"\r> 检测倒计时:{i} 秒!", end="")
print("\n")
if __name__ == '__main__':
# 设置一下命令窗的大小
os.popen("mode con cols=50 lines=10")
# sleep_min 循环检测次数,sleep_sleep 超时检测次数后睡眠,sleep_hide 超时检测次数后休眠
# 灵敏度调节 lm人脸检测灵敏度, out_key人脸验证次数, out_time人脸检测超时(秒)
post_config(sleep_min=3, sleep_sleep=2, sleep_hide=5, lm=1.5, out_key=5, out_time=6)
4.展示!
4.1 部分功能参照:
windows cmd 自定义关机,重启,休眠: https://blog.csdn.net/qq_43674360/article/details/111246177
PsShutdown v2.53 : https://docs.microsoft.com/en-us/sysinternals/downloads/psshutdown
键盘各键对应的ASCII码值 : https://zhIDAo.baidu.com/question/266291349.html
5.分享 ( 欢迎大家 Fork! )
Github地址 :https://github.com/Xyhshell/Auto_Pc_Power_Management
V2版执行文件分享!:https://jingmo.lanzouq.com/iibeq02yu7la
执行文件分享V1(不推荐)!:https://jingmo.lanzouq.com/iLAms02smaad