我是靠谱客的博主 爱撒娇大白,最近开发中收集的这篇文章主要介绍视频人像检测(OpenCV),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

初学OpenCV,欢迎大佬请多多指点,嘿嘿

源码如下:

import cv2.cv2 as cv
import matplotlib.pyplot as plt

# 读取视频
cap = cv.VideoCapture(0)

# 对每一帧数据进行人脸检测
while (cap.isOpened()):
    ret,frame = cap.read()
    if ret == True:
        gray = cv.cvtColor(frame,cv.COLOR_BGR2GRAY)
        # 实例化人脸检测分类器
        face_cas = cv.CascadeClassifier('haarcascade_frontalface_default.xml')
        face_cas.load('haarcascade_frontalface_default.xml')

        face_rects = face_cas.detectMultiScale(gray,scaleFactor=1.2,minNeighbors=3,minSize=(32,32))
        for facerect in face_rects:
            x,y,w,h = facerect
            # 框出人脸
            cv.rectangle(frame,(x,y),(x+w,y+h),(0,255,0),3)
        cv.imshow('frame',frame)
        if cv.waitKey(1)&0xff == ord('d'):
            break
    # 释放资源
cap.release()
cv.destroyAllWindows()

使用import cv2.cv2 as cv为了解决在pycharm中使用cv2包内置函数的时候没有代码补全提示的问题

首先读取视频,并检测视频是否正确被读取,然后对提取出的每一帧图像进行灰度处理。

CascadeClassifier是OpenCV中做人脸检测的时候的一个级联分类器。其参数为人脸检测模型,代码中的参数为OpenCV自带的人脸检测的模型,实例化完人脸检测模型后并加载该模型到一个变量中

对于dectectMultiScale函数,我始终弄不懂它的意义直到看到这篇文章---Python学习笔记(8)——我对OpenCV人脸检测方法detectMultiScale参数的理解 - it610.com

对于该函数我的理解如下:

①参数image:首先该函数检测图像是灰度图

②参数scaleFactor:缩放比例,haar级联分类器采用的是滑动窗口检测的方法,每次窗口画出图像后进行大小调整后再搜索直到无法缩小,如果检测的图像像素值比较大,则可以设置的大一点(拢共可以设置的大小为1.0-1.5)

③参数minNeighbors: 查阅了很多文章,但是还是没有很好的理解这个参数的意义,我的理解如下供大家参考:函数进行人脸检测时,会返回人脸矩阵,在很多人同框的时候,返回难免会出现错误,而该参数可以消除这种错误,简单来说就是该参数表示构成人脸目标的相邻矩阵的最小个数(默认是三个),相当于验证,当为0的时候显示所有框选区,当值增大后,目标选择速度加快,但是许多细节则会被忽略

④参数minSize和maxSize:设置检测对象的最大最小值,低于minSize和高于maxSize的话就不会检测出来。

最后

以上就是爱撒娇大白为你收集整理的视频人像检测(OpenCV)的全部内容,希望文章能够帮你解决视频人像检测(OpenCV)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部