OpenCV实践之OpenCV人脸识别

调用OpenCV训练好的分类器和自带的检测函数检测人脸

步骤
  1. 加载分类器
  2. 调用detectMultiScale()函数检测,调整函数的参数可以使检测结果更加精确
  3. 把检测到的人脸用矩形画出来

主要函数:

image.png

1.image表示的是要检测的输入图像
2.objects表示检测到的人脸目标序列
3.scaleFactor表示每次图像尺寸减小的比例
4.minNeighbors表示每一个目标至少要被检测到3次才算是真的目标(因为周围的像素和不同的窗口大小都可以检测到人脸),
5.minSize为目标的最小尺寸
6.minSize为目标的最大尺寸

适当调整4,5,6两个参数可以用来排除检测结果中的干扰项。

python程序:

import cv2
import numpy as np 


# 使用opencv进行面部检测
def mk_face(imgPath):
    # 加载面部 分类器
    face_cacsde = cv2.CascadeClassifier(
        './data/haarcascades/haarcascade_frontalface_default.xml')
    # 加载眼部 分类器
    eye_cacsde = cv2.CascadeClassifier(
        './data/haarcascades/haarcascade_eye.xml')
    # 读取照片
    img = cv2.imread(imgPath)
    # 将BGR颜色转换为GRAY
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    # 检测面部 参数:1, 待检测的输入图像。2,检测到的人脸目标序列。3,每次图像尺寸减少的比例
    # 4,每一个目标至少要被检测到3次才算是真的目标.5,目标的最小尺寸. 6,目标的最大尺寸
    faces = face_cacsde.detectMultiScale(
        gray, 1.1, 5, cv2.CASCADE_SCALE_IMAGE, (50, 50), (100, 100))
    
    if len(faces) > 0:
        for faceRect in faces:
            x, y, w, h = faceRect
            # 画一个绿色矩形
            cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2, 8, 0)

            roi_gray = gray[y:y+h, x:x+w]
            roi_color = img[y:y+h, x:x+w]
            # 识别人眼
            eyes = eye_cacsde.detectMultiScale(
                roi_gray, 1.1, 1, cv2.CASCADE_SCALE_IMAGE, (2, 2))
            # 画人眼的矩形
            for (ex, ey, ew, eh) in eyes:
                cv2.rectangle(
                    roi_color, (ex, ey), (ex+ew, ey+eh), (0, 255, 0), 2)
    cv2.imshow('img', img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()


def main():
    mk_face('./data/7.jpg')
    pass

if __name__ == '__main__':
    main()

效果:

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 这些年计算机视觉识别和搜索这个领域非常热闹,后期出现了很多的创业公司,大公司也在这方面也花了很多力气在做。做视觉搜...
    方弟阅读 6,569评论 6 24
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,482评论 25 708
  • 之前一直觉得人脸检测是非常麻烦的,即使是用OpenCV麻烦到我都不敢去碰。这两天仔细看了下,如果只是调用openc...
    冰不语阅读 10,148评论 3 17
  • 深夜,梓木学院的一间女宿舍仍然发着淡淡的光,林月身上的一块玉佩逐渐变成血红色,显得格外渗人。 林月...
    月青木阅读 174评论 0 0
  • 一声春雷,万物复苏,内心的渴望是不是又开始叫嚣。 喜欢雨夜,喜欢苏州古镇的雨夜,没有北方雨打铁皮屋檐的刺耳,只有雨...
    是温暖呀阅读 286评论 0 0