基于opencv实现人脸识别

痞子三分冷 提交于 2020-02-17 05:35:47

利用opencv,及自带的人脸识别训练结果(安装包site_package下cv2包内data下的haarcascade_frontalface_default.xml)

这里的opencv可以使用: pip install opencv-python 安装!MAC可能需要brew安装再关联包。

我们需要准备:

  1. 待识别的图片
  2. 准备haarcascade_frontalface_default.xml文件

我们计划识别lenna的图片:
在这里插入图片描述

import cv2

if __name__ == "__main__":
    # 文件地址
    file = r'./files/lenna.jpeg'
    # 人脸识别训练结果文件
    cascade = r'./files/haarcascade_frontalface_default.xml'

    # 读取彩色图片,用以识别后的结果绘图
    img = cv2.imread(file)
    # 将文件转化为灰度模式
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # 创建集联分类器
    face_cascade = cv2.CascadeClassifier(cascade)
    # 开始扫描人脸, 参数可调,描述后附
    faces = face_cascade.detectMultiScale(gray, scaleFactor=1.05, minNeighbors=5)

    # 扫描的结果,为左上角坐标及宽,高
    for x, y, w, h in faces:
        # 将结果在彩色图片上用绿色的矩形绘制出来
        img = cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 3)

    # 显示最终结果
    cv2.namedWindow("lenna")
    cv2.imshow("lenna", img)
    # 等待相应任意按键,结束程序
    cv2.waitKey(0)
    cv2.destroyAllWindows()

运行结果如下:
在这里插入图片描述

  • 参数解读:
参数名 解释
scaleFactor 默认值为1.1。scale_factor参数可以决定两个不同大小的窗口扫描之间有多大的跳跃,这个参数设置的大,则意味着计算会变快,但如果窗口错过了某个大小的人脸,则可能丢失物体。
minNeighbors 默认值3。表示每一个目标至少要被检测到3次才算是真的目标(因为周围的像素和不同的窗口大小都可以检测到人脸)

如果对您有帮助,欢迎点赞评论!

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!