python使用opencv人脸识别实现人走后息屏

人走后息屏|离开座位后息屏|基于python-opencv人脸识别实现

本机环境:python 3.10.5/windows带摄像头
前提:pip install opencv-python
haarcascade_frontalface_default.xml和haarcascade_frontalface_default.xml这两个文件在你安装完pip install opencv-python后用文件搜索软件(如everything)搜索就能找到,找到后复制到此代码同目录下,否则会报错

# -*- coding: UTF-8 -*-
# 调用电脑摄像头进行实时人脸+眼睛识别,人脸未识别到会使电脑息屏,可直接复制粘贴运行
import cv2
from ctypes import *
def left_lock():
    face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
    eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
    # 调用摄像头摄像头
    cap = cv2.VideoCapture(0)
    i=0
    while(True): 
        # 获取摄像头拍摄到的画面
        ret, frame = cap.read()
        frame = cv2.flip(frame, 1)
        faces = face_cascade.detectMultiScale(frame, 1.3, 5)
        print(type(faces))
        if  isinstance(faces,tuple):
            i=i+1
        else:
            i=0
        if i>=100:
            user32 = windll.LoadLibrary('user32.dll')
            user32.LockWorkStation()
            i=0    
        img = frame
        for (x,y,w,h) in faces:
            # 画出人脸框,蓝色,画笔宽度微
            img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
            # 框选出人脸区域,在人脸区域而不是全图中进行人眼检测,节省计算资源
            face_area = img[y:y+h, x:x+w]
            eyes = eye_cascade.detectMultiScale(face_area)
            # 用人眼级联分类器引擎在人脸区域进行人眼识别,返回的eyes为眼睛坐标列表
            for (ex,ey,ew,eh) in eyes:
                #画出人眼框,绿色,画笔宽度为1
                cv2.rectangle(face_area,(ex,ey),(ex+ew,ey+eh),(0,255,0),1)       
        # 实时展示效果画面
        cv2.imshow('do_not_leave',img)
        k=cv2.waitKey(1)
    	# 点击窗口X按钮关闭窗口,窗口名字要对应
        if cv2.getWindowProperty('do_not_leave',cv2.WND_PROP_VISIBLE) < 1.0: 
            break 
        if k == 27:#按esc退出
            break
        elif k == ord('s'):#按s截图  
            cv2.imwrite('D:/project1/1.jpg', img)#路径根据情况自行修改
    # 最后释放摄像头,关闭所有窗口
    cap.release()
    cv2.destroyAllWindows()
left_lock()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值