• 使用OpenCV训练好的级联分类器识别人脸


    一、使用OpenCV训练好的级联分类器来识别图像中的人脸

    当然还有很多其他的分类器,例如表情识别,鼻子等,具体可在这里下载:

    OpenCV分类器

    import cv2
    # 矩形颜色和描边
    color = (0,0,255)       # 红色框
    strokeWeight = 1        # 线宽为 1
    windowName = "Object Detection"
    img = cv2.imread("lena.jpg")
    
    # 加载检测文件
    cascade = cv2.CascadeClassifier("F:/opencv-master/data/haarcascades/haarcascade_frontalface_alt.xml")
    
    rects = cascade.detectMultiScale(img)
     
    # 获取矩形列表
    for x,y, width,height in rects:
        cv2.rectangle(img, (x,y), (x+width, y+height), color, strokeWeight)
    
    # 显示
    cv2.imshow(windowName, img)
    cv2.waitKey(0)

    效果如图所示:

    二、检测摄像头视频中的人脸

    原理和在图片中检测出人脸差不多,都是加载训练好的分类器。

    import cv2
    import time
    import numpy as np
    print('Press Esc to exit')
    
    # 加载分类器
    faceCascade = cv2.CascadeClassifier('F:/opencv-master/data/haarcascades/haarcascade_frontalface_default.xml')
    imgWindow = cv2.namedWindow('FaceDetect', cv2.WINDOW_NORMAL)
    def detect_face():
        capInput = cv2.VideoCapture(0)
        # 避免处理时间过长造成画面卡顿
        nextCaptureTime = time.time()
        faces = []
        
        # 检测摄像头是否读取数据
        if not capInput.isOpened(): 
            print('Capture failed because of camera')
        while 1:
            ret, img = capInput.read()
            gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
            if nextCaptureTime < time.time():
                nextCaptureTime = time.time() + 0.1
                
                # 使用模板匹配图形
                faces = faceCascade.detectMultiScale(gray, 1.3, 5)
            if np.all(faces != None):
                for x, y, w, h in faces:
                    # 用蓝色框框出
                    # 函数的参数分别为:图像,左上角坐标、右下角坐标、颜色、宽度
                    img = cv2.rectangle(img, (x, y), (x + w, y + h), (255, 0, 0), 2)
            cv2.imshow('FaceDetect', img)
            # 这是简单的读取键盘输入,27即Esc的acsii码
            if cv2.waitKey(1) & 0xFF == 27: break
        capInput.release()
        cv2.destroyAllWindows()
    
    detect_face()

    效果不错,就不展示图了(不想展示脸。。。。)

  • 相关阅读:
    1001 字符串“水”题(二进制,map,哈希)
    hzau 1210 Happiness
    hzau 1209 Deadline(贪心)
    hzau 1208 Color Circle(dfs)
    hzau 1207 Candies
    hzau 1206 MathematicalGame
    hzau 1205 Sequence Number(二分)
    hzau 1204 Escape from the Darkness
    Calculator 2
    Calculator
  • 原文地址:https://www.cnblogs.com/gezhuangzhuang/p/10697193.html
Copyright © 2020-2023  润新知