1、上班的时候突然又一个想法,就是如果有人试图在我锁屏界面输入密码解锁我的设备,可不可以调用电脑的摄像头拍摄一张照片呢?
2、有了想法赶紧实现,就随便问了下chaggpt,他推荐了几个软件,后来我一想本来就是很简单的一个拍摄操作。然后我就让他写了一个脚本,他就给我写一个python脚本。
3、恰好我的电脑是有python环境的,试着运行了一下他的脚本,可以运行没有毛病。然后我就问他怎样可以实现我说的”输入错误密码就运行程序拍摄照片“,他说可以把这个脚本加入到计划任务里面,我用它的方法试了下无法在输入错误密码的时候运行程序。
4、脚本加入计划任务流程如下:
windows+R 运行 ”taskschd.msc“,弹出窗口左侧选择创建任务
触发器选项选择新建触发器,chat提供创建任务的方法和和事件id都有点问题,事件id是我自己找到的。
操作选项新建操作如下
然后保存就可以了,我锁屏之后解锁屏幕使用的是PIN码,我没有试过如果不是PIN码解锁,事件id是否需要变一下
5、脚本如下
import cv2
import time
from PIL import Image
from datetime import datetime
def take_snapshot():
# 获取当前时间
now = datetime.now()
# 将时间格式化为字符串
current_time = now.strftime("%Y%m%d%H%M%S")
# 打开摄像头
video_capture = cv2.VideoCapture(0)
# 等待摄像头启动 这个等待摄像头启动2s可以去掉,不然太慢了
time.sleep(2)
# 捕获一帧图像
ret, frame = video_capture.read()
# 关闭摄像头
video_capture.release()
# 保存图像 chat给的脚本没有设置保存目录,我这块给图片名字加了时间戳和存放路径
image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
img_pil = Image.fromarray(image)
img_pil.save("C:/shoot/to/"+current_time+"snapshot.jpg")
if __name__ == "__main__":
take_snapshot()
然后就可以尝试了输入错误pin码,来验证效果了
6、不要频繁错误输入pin码,我就被锁了两个小时,后来用微软账号登录才进入电脑。