OpenCV-python自学笔记1-Haar级联分类器-人脸特征检测(检测脸部和眼睛)

有一段时间没有更新博客了,

1.获得opencv中的级联数据

我们在python中安装好了opencv后,在opencv的安装路径下会有一个data/haarcasades。,这个文件夹中有很多我们常用到的特征检测的xml文件,可以用于检测静止的图像,视频等文件

OpenCV-python自学笔记1-Haar级联分类器-人脸特征检测(检测脸部和眼睛)_第1张图片

我们可以将这些文件复制下来,放在我们的工程文件夹中,方便我们随时的去调用

2.使用opencv进行人脸检测

在项目中建立一个csacades文件夹,将xml文件复制到里面

OpenCV-python自学笔记1-Haar级联分类器-人脸特征检测(检测脸部和眼睛)_第2张图片

接下来我们编写一个基本的脚本模块来实现视频中人脸检测

import cv2
import sys

def detect():
    face_casade=cv2.CascadeClassifier("haarcascade_frontalface_default.xml") #使用脸部检测
    eye_casade=cv2.CascadeClassifier("haarcascade_eye.xml")
    camera=cv2.VideoCapture(0)  #0代表调用默认摄像头,1代表调用外接摄像头


    while (True):
        ret,frame=camera.read()

        gray=cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
        faces=face_casade.detectMultiScale(gray,1.3,5)

        for (x,y,w,h) in faces:#返回的x,y代表roi区域的左上角坐标,w,h代表宽度和高度
            img=cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),2)
            roi_gray=gray[y:y+h,x:x+w]
            eyes=eye_casade.detectMultiScale(roi_gray,1.03,5,0,(40,40))

            for (ex,ey,ew,eh) in eyes:
                cv2.rectangle(img,(x+ex,y+ey),(x+ex+ew,y+ey+eh),(0,255,0),2)

        cv2.imshow("camera",frame)

        key=cv2.waitKey(30)&0xff
        if key==27:
            sys.exit()
if  __name__=="__main__":
    detect()

 

OpenCV-python自学笔记1-Haar级联分类器-人脸特征检测(检测脸部和眼睛)_第3张图片

这部分的内容参考了《opencv3 计算机视觉-python代码实现》这一本书,不过原书的代码并不能跑通,最后发现有个地方有点小问题,稍稍做了修改后,可以达到效果

你可能感兴趣的:(OpenCV,Python,机器学习)