2.[人脸识别] python 摄像头对眼睛和鼻子的检测器

目录

1.环境

2.代码

3.效果图


1.环境

1.python: 3.6.6 [64bit]
 
2.python packages:
    1). opencv-python==3.4.1.15
    2). opencv-contrib-python==4.4.0.42
    
3.python包下载安装出错,可以尝试一下方式:
    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host pypi.tuna.tsinghua.edu.cn <+python包>

4.探测器 Haar级联文件下载:
    https://github.com/opencv/opencv/tree/master/data

2.代码

import cv2


class HaarTesting:

    def __init__(self, x_scaling_factor=0.8, y_scaling_factor=0.8):
        # 加载脸部,眼睛,鼻子级联文件
        self.x_scaling_factor = x_scaling_factor
        self.y_scaling_factor = y_scaling_factor
        self.face_cascade = cv2.CascadeClassifier('haarcascade\\haarcascade_frontalface_alt.xml')
        self.eye_cascade = cv2.CascadeClassifier('haarcascade\\haarcascade_eye.xml')
        self.nose_cascade = cv2.CascadeClassifier('haarcascade\\haarcascade_mcs_nose.xml')

    def testing(self):
        cap = cv2.VideoCapture(0)
        while True:
            ret, frame = cap.read()
            frame = cv2.resize(frame, dsize=None, fx=self.x_scaling_factor, fy=self.y_scaling_factor,
                               interpolation=cv2.INTER_AREA)
            gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

            faces = self.face_cascade.detectMultiScale(gray)
            for (x, y, w, h) in faces:
                roi_gray = gray[y:y + h, x:x + w]
                roi_color = frame[y:y + h, x:x + w]
                eye_rects = self.eye_cascade.detectMultiScale(roi_gray)
                nose_rects = self.nose_cascade.detectMultiScale(roi_gray)

                for (x_eye, y_eye, w_eye, h_eye) in eye_rects:
                    center = (int(x_eye + 0.5 * w_eye), int(y_eye + 0.5 * h_eye))
                    radius = int(0.3 * (w_eye + h_eye))
                    color = (0, 255, 0)
                    thickness = 3
                    cv2.circle(roi_color, center, radius, color, thickness)

                for (x_nose, y_nose, w_nose, h_nose) in nose_rects:
                    cv2.rectangle(roi_color, (x_nose, y_nose), 
                                             (x_nose + w_nose, y_nose + h_nose), (0, 0, 255), 3)
                    # break

            cv2.imshow('Eye and nose detector', frame)
            c = cv2.waitKey(1)
            if c == 27:
                break
        cap.release()
        cv2.destroyAllWindows()

3.效果图

 (测试图为网上下载,若侵权则删)

参考:Python-opencv实现摄像头实时进行人脸识别(点击)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值