基于Python,opencv实现人脸检测

OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。
OpenCV可用于解决如下领域的问题:增强现实、人脸识别、手势识别、人机交互、动作识别、运动跟踪、物体识别、图像分割、机器人。
本篇文章将讲述使用Python和OpenCV提供好的人脸分类模型实现人脸检测

配置环境

Python 3
Opencv (pip install opencv-python 会自己安装cv2和numpy模块 可以使用cmd中 python-import cv2 再次import numpy 没提示错误就说明装好了)
人脸分类模型 下载地址 该文件夹下都下载下来。github下载文件夹文件的方法

代码实现

#coding=utf-8
#图片检测 - OpenCV版本
import cv2
import time
filepath = "../../face_photos/yiqi.jpg"
# OpenCV人脸识别分类器
classifier = cv2.CascadeClassifier(
    "data/haarcascade_frontalface_default.xml")

#记下 程序开始时间
t=time.time()
img = cv2.imread(filepath)  # 读取图片
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)  # 转换灰色
color = (0, 255, 0)  # 定义绘制颜色
# 调用识别人脸
faceRects = classifier.detectMultiScale(
    gray, scaleFactor=1.2, minNeighbors=3, minSize=(32, 32))
if len(faceRects):  # 大于0则检测到人脸
    for faceRect in faceRects:  # 单独框出每一张人脸
        x, y, w, h = faceRect
        # 框出人脸
        cv2.rectangle(img, (x, y), (x + h, y + w), color, 2)

print('运行时间{}'.format(time.time()-t))
cv2.imshow("image", img)  # 显示图像
cv2.waitKey(0)  #等待按键
#cv2.destroyAllWindows()
time.sleep(5)

效果图

所用时间0.15s左右 速度较快
在这里插入图片描述

更改路径

里面只需要将 filepath后面的路径换成需要检测人脸的照片
将classifier 后面的路径 改成 上面提到的人脸检测模型的路径

分类器参数说明

分类器classifier.detectMultiScale(gray, scaleFactor=1.2, minNeighbors=3, minSize=(32, 32))参数说明:

gray:转换的灰图

scaleFactor:图像缩放比例,可理解为相机的X倍镜

minNeighbors:对特征检测点周边多少有效点同时检测,这样可避免因选取的特征检测点太小而导致遗漏

minSize:特征检测点的最小尺寸

补充

还可以画出脸部的部分器官
这个是推算出来的 并不是很准确

# 左眼
        cv2.circle(img, (x + w // 4, y + h // 4 + 30), min(w // 8, h // 8),
                    color)
        # #右眼
         cv2.circle(img, (x + 3 * w // 4, y + h // 4 + 30), min(w // 8, h // 8),
                    color)
        #嘴巴
        cv2.rectangle(img, (x + 3 * w // 8, y + 3 * h // 4),
                     (x + 5 * w // 8, y + 7 * h // 8), color)

其他

其他人脸识别模块介绍 https://blog.csdn.net/Nirvana_6174/article/details/89599441
http://niehen.cn/category/face-reco/

欢迎加入人工智能-人脸识别 技术交流群 894243022

点击下面图片即可加群
人工智能-人脸识别

该文章有使用链接,如有侵权还请见谅。使用本文章或代码还请声明。
  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值