博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用Haar分类器进行面部检测
阅读量:6963 次
发布时间:2019-06-27

本文共 2138 字,大约阅读时间需要 7 分钟。

   Haar特征分类器就是一个XML文件,存放在OpenCV安装目录中的\data\ haarcascades目录下

  • OpenCV中的Haar级联检测

  OpenCV 自带了训练器和检测器。如果你想自己训练一个分类器来检测汽车,飞机等的话,可以使用 OpenCV 构建。其中的细节参考这里:

  现在我们来学习一下如何使用检测器。OpenCV 已经包含了很多已经训练好的分类器,其中包括:面部,眼睛,微笑等。这些 XML 文件保存在/opencv/data/haarcascades/文件夹中。下面我们将使用 OpenCV 创建一个面部和眼部检测器。首先我们要加载需要的 XML 分类器。然后以灰度格式加载输入图像或者是视频。

import sysimport cv2import cv2.cv as cvimport numpy as npOPENCV_PATH = r"C:/Program Files/OpenCV2/opencv" # Cascade classifier class for object detection.# Python: cv2.CascadeClassifier(filename) -> CascadeClassifier object# Parameters: filename – Name of the file from which the classifier is loaded.face_cascade = cv2.CascadeClassifier(OPENCV_PATH + '/data/haarcascades/haarcascade_frontalface_default.xml')cap = cv2.VideoCapture("test.avi") # 打开视频文件 # Returns true if video capturing has been initialized alreadyif not cap.isOpened():   # 检测视频是否打开成功     sys.exit()rate=cap.get(cv.CV_CAP_PROP_FPS) # 获取帧率 delay = int(1000 / rate)         # 每一帧之前的延迟与视频的帧率相对应while(True):    # Capture frame-by-frame    ret, frame = cap.read()    # Our operations on the frame come here    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)    # Detects objects of different sizes in the input image.    # The detected objects are returned as a list of rectangles     faces = face_cascade.detectMultiScale(gray, 1.3, 5)        for (x,y,w,h) in faces:        cv2.rectangle(frame,(x,y),(x+w,y+h),(255,0,0),2)    # Display the resulting frame    cv2.imshow('frame', frame)    if cv2.waitKey(delay) & 0xFF == ord('q'):        break# Closes video file or capturing device.cap.release()cv2.destroyAllWindows()

  下面是对动画片中的一个视频片段进行人脸检测:

  下面检测照片(1927年第五届)中的多个人脸:

import cv2OPENCV_PATH = r"C:/Program Files/OpenCV2/opencv" face_cascade = cv2.CascadeClassifier(OPENCV_PATH + '/data/haarcascades/haarcascade_frontalface_default.xml')img = cv2.imread('test.png')gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)faces = face_cascade.detectMultiScale(gray, 1.3, 2)for (x,y,w,h) in faces:    cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)cv2.imshow('image',img)cv2.waitKey(0)cv2.destroyAllWindows()

 

 

 

参考:

转载于:https://www.cnblogs.com/21207-iHome/articles/6253796.html

你可能感兴趣的文章
grep精确匹配(存在. -的情况)
查看>>
鼠标滑在标题上显示图片的JS代码
查看>>
View Horizon Mirage安装手册(一)——Horizon Mirage介绍
查看>>
Mac OSX 正确地同时安装Python 2.7 和Python3
查看>>
python 爬虫之BeautifulSoup 库的基本使用
查看>>
Linux 文件查找命令详解
查看>>
MySQL中权限管理
查看>>
JavaEE 请求响应
查看>>
如何解决数据文件传输的风险?
查看>>
查看域名解析是否生效的方法
查看>>
Linux Crontab定时任务
查看>>
ubuntu安装谷歌浏览器
查看>>
崛起于Springboot2.X之mysql读写分离升级版(22)
查看>>
Weblogic数据池测试出错
查看>>
django 迁移数据 暂时禁用auto_now / auto_now_add
查看>>
Tomcat中server.xml文件内各节点详解
查看>>
SSH远程访问及控制
查看>>
centos6 远程桌面链接
查看>>
jquery javascript iframe操作
查看>>
【原创】一路成长一路歌
查看>>