opencv 人脸检测,人眼检测,微笑检测 (摄像头)

调用 opencv 自带的训练集进行识别。
入门级别很简单,没什么好说的,注释齐全可以看懂
直接上代码

import cv2
import numpy as np

face_cascade = cv2.CascadeClassifier(r'C:\python\Lib\site-packages\cv2\data\haarcascade_frontalface_alt.xml')
eye_cascade = cv2.CascadeClassifier(r'C:\python\Lib\site-packages\cv2\data\haarcascade_eye.xml')
smile_cascade = cv2.CascadeClassifier(r'C:\python\Lib\site-packages\cv2\data\haarcascade_smile.xml')
#调用训练集
#注意不要忘了最后加上 xml 文件类型!!!

cap = cv2.VideoCapture(0) #打开摄像头
while True:
    ret, frame = cap.read()
    img = frame
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  #灰度转换
    faces = face_cascade.detectMultiScale(gray, 1.3, 2)  #识别
    for (x, y, w, h) in faces:
        cv2.rectangle(img,(x,y), (x+w,y+h), (255,0,0), 3 )  #在人脸画矩形
        face_area = gray[x:x+w, y:y+h] # 裁剪人脸区域,提高检索效率。注意是中括号不是小括号
        
        eyes = eye_cascade.detectMultiScale(face_area, 1.3, 1) #人眼检测
        for (ex, ey ,ew, eh) in eyes:
            cv2.rectangle(face_area, (ex,ey), (ex+ew,ey+eh), (255,0,0), 3)

        smile = smile_cascade.detectMultiScale(face_area, scaleFactor=1.16, minNeighbors=65, minSize=(25,25), flags=cv2.CASCADE_SCALE_IMAGE)
        for (ex,ey,ew,eh) in smile:  #微笑检测
            cv2.rectangle(face_area, (ex,ey), (ex+ew,ey+eh), (255,0,0), 3)
            cv2.putText(img, 'Smile', (x,y-7), 3, 1.2, (0,0,255), 2, cv2.LINE_AA)

    cv2.imshow('frame', img) #输出检测到的每一帧,组成视频
    if cv2.waitKey(5) & 0xff==ord('q'): #每5ms读取一帧,按 q 关闭摄像头
        break;
cap.release() #释放摄像头
cv2.destroyAllWindows() #摧毁所有窗口























评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值