• opencv 机器学习-人脸识别


    基本概念

    在这里插入图片描述

    计算机视觉与机器学习的关系

    计算机视觉是机器学习的一种应用,而且是最有价值的应用

    人脸识别

    • 哈尔(Haar)级联方法
    • 深度学习方法(DNN)

    哈尔(Haar)级联方法

    • Haar是专门为解决人脸识别而推出的
    • 在深度学习还不流行时,Haar已经可以商用

    哈尔(Haar)级联方法人脸识别步骤

    • 创建Haar级联器
    • 导入图片并将其灰度化
    • 调用detectMultiScale方法进行人脸识别

    detectMultiScale

    • detectMultiScale(img,double scaleFactor=1.1,int minNeighbors=3,…)
    import cv2 as cv
    import numpy as np
    
    # 第一步,创建Haar级联器
    facer = cv.CascadeClassifier(r'C:\ProgramData\Anaconda3\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml')
    # 第二步,导入人脸识别的图片并将其灰度化
    img = cv.imread(r"C:\Users\Administrator\Desktop\girl.png")
    gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
    
    # 第三步,进行人脸识别
    # [[x,y,w,h]]
    faces = facer.detectMultiScale(gray, 1.2, 5)
    
    for (x, y, w, h) in faces:
        cv.rectangle(img, (x, y), (x+w, y+h), (0, 0, 255), 2)
    cv.imshow("img", img)
    cv.waitKey(0)
    
    

    在这里插入图片描述

    其他部位检测

    import cv2 as cv
    import numpy as np
    
    # 第一步,创建Haar级联器
    facer = cv.CascadeClassifier(r'C:\ProgramData\Anaconda3\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml')
    eye = cv.CascadeClassifier(r'C:\ProgramData\Anaconda3\Lib\site-packages\cv2\data\haarcascade_eye.xml')
    
    # 第二步,导入人脸识别的图片并将其灰度化
    img = cv.imread('./tt.jpg')
    gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    
    # 第三步,进行人脸识别
    # [[x,y,w,h]]
    faces = facer.detectMultiScale(gray, 1.2, 5)
    
    
    i = 0
    for (x, y, w, h) in faces:
        cv.rectangle(img, (x, y), (x+w, y+h), (0, 0, 255), 2)
        roi_img = img[y:y+h, x:x+w]
        eyes = eye.detectMultiScale(roi_img, 1.2, 5)
        for (x, y, w, h) in eyes:
            cv.rectangle(roi_img, (x, y), (x + w, y + h), (255, 0, 0), 2)
        i = i+1
        winname = "fave" + str(i)
        cv.imshow(winname, roi_img)
        cv.waitKey(0)
    
    
  • 相关阅读:
    详解RFC 793文档-2
    解决模态框不显示的问题
    从研发域到量产域的自动驾驶工具链探索与实践
    你需要偷偷珍藏的java兼职平台
    JAVASE语法零基础——封装与包
    Java基础—面向对象三大特性
    863. 二叉树中所有距离为 K 的结点
    java mysql ssm框架的同城配送系统源码
    聚观早报 | TCL召开电视新品发布会;OceanBase 4.3发布
    【码蹄集新手村 600 题】判断俩个矩阵是否相等,以及 exit 与 return 的区别
  • 原文地址:https://blog.csdn.net/qq_41803556/article/details/127040251