上篇文章介绍了OpenCV进行照片人脸检测,今天学习的是OpenCV进行视频人脸检测,所有的参考博文、文献、视频、代码都会在文末附上链接或文件压缩包。
本文的目录如下:
一、Opencv 进行视频人脸检测
1、代码
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import cv2
# 人脸检测函数:
# useCamera参数:True表示使用摄像头,False表示读取当前目录下视频文件
def face_detection(useCamera=False):
# 1.调用摄像头或者使用读取视频
cv2.namedWindow("CaptureFace")
if useCamera == True:
cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)
else:
cap = cv2.VideoCapture('./video2.mp4')
# 2.人脸识别器分类器
classfier = cv2.CascadeClassifier('./opencv/sources/data/haarcascades/haarcascade_frontalface_alt2.xml')
color = (0, 255, 0)
while cap.isOpened():
flag, frame = cap.read()
frame = cv2.flip(frame, 1) # 镜像操作
if not flag:
break
# 3.灰度转换
grey = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 4.人脸检测,1.2和2分别为图片缩放比例和需要检测的有效点数
facerects = classfier.detectMultiScale(grey, scaleFactor=1.2, minNeighbors=3, minSize=(32, 32))
if len(facerects) > 0: # 大于0则检测到人脸
for faceRect in facerects: # 单独框出每一张人脸
x, y, w, h = faceRect
# 5.画图
cv2.rectangle(frame, (x - 10, y - 10), (x + w + 10, y + h + 10), color, 3)
cv2.imshow("CaptureFace", frame)
if cv2.waitKey(10) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
face_detection() # 使用摄像头
face_detection(useCamera=False) # 使用视频
2、代码解释
detectMultiScale()函数
核心部分用到的同样是detectMultiScale(),具体参数解释见上篇博客OpenCV进行照片人脸检测。
cv2.rectangle()函数
这里主要记录一下cv2.rectangle()函数。
cv2.rectangle 这个函数的作用是在图像上绘制一个简单的矩形。
opencv 官网上给出的 cv2.rectangle 函数定义 如下:
cv2.rectangle(img, pt1, pt2, color[, thickness[, lineType[, shift]]]) → None
第一个参数 img 指定一张图片,在这张图片的基础上进行绘制;
第二、三个参数 pt1 和 pt2 分别代表矩形的左上角和右下角两个点,而且 x 坐标轴是水平方向的,y 坐标轴是垂直方向的。
第四个参数 color 参数一般用 RGB 值指定,表示矩形边框的颜色。RGB 对应的颜色可以使用 https://www.sioe.cn/yingyong/yanse-rgb-16/ 查看。opencv中读入图片数据是按照b,g,r的顺序,所以(0,0,255)代表红色,(0,255,0)代表绿色。可以看到下面的识别框为绿色。
第五个参数 thickness 参数表示矩形边框的厚度,即线条的粗细值,为正值时代表线条的粗细(以像素为单位),为负值时边框实心,如 CV_FILLED,则表示填充整个矩形。
第六个参数 lineType 表示线型。如果指定为 CV_AA,则是使用高斯滤波器画反锯齿线。
第七个参数 shift 参数表示点坐标中的小数位数。
3、效果分析
随着视频播放,人物位置的改变,随机从视频中截取了两张图片,都能够检测到人脸。
参考博文
基于opencv的人脸检测(图片、视频、摄像头)
opencv cv2.rectangle 参数含义
使用的视频: https://haokan.baidu.com/v?pd=wisenatural&vid=8158766618890451729文章来源:https://www.toymoban.com/news/detail-402455.html
本文先写到这里,欢迎大家批评指正!文章来源地址https://www.toymoban.com/news/detail-402455.html
到了这里,关于【使用OpenCV进行视频人脸检测】------机器学习(附完整代码和数据集)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!