ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python-opencv之人脸检测

2022-07-24 14:00:44  阅读:209  来源: 互联网

标签:img python 检测 opencv 人脸 cv 255


引用网址:https://www.it610.com/article/1546269872961425408.htm

文章目录

  • 一、概述
  • 二、相关概念
  • 三、实际操作
    • 1.图片检测
    • 2.打开摄像头进行人脸检测

 


一、概述

`本文为我学习python环境下用opencv检测人脸的内容总结。

二、相关概念

##opencv中提供了三种训练好的级联分类器(通过不同特征进一步筛选,最终得出所属的分类)。在相应的haarcascades、hogcascades、lbpcascades文件夹中分别存放着HAAR、HOG、LBP级联分类器,他们以.xml的文件形式存放在opencv的源文件中。
python-opencv之人脸检测_第1张图片
不同的.xml文件可检测不同的类型,如:眼睛、眼镜、正面人脸、鼻子等。

三、实际操作

1.图片检测

代码如下(示例):

import cv2 as cv
def fac_detect_demo():#人脸检测函数
    gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)#图片变为灰度图,人脸特征需在灰度图中查找
    face_detector=cv.CascadeClassifier('E:/opencv/data/haarcascades/haarcascade_frontalface_default.xml')
    #通过级联检测器cv.CascadeClassifier,加载特征数据
    faces= face_detector.detectMultiScale(gray)
    #在尺度空间对图片进行人脸检测
    for x,y,w,h in faces:#绘制矩形,
        cv.rectangle(img,(x,y),(x+w,y+h),color=(23,255,255),thickness=3)#矩形第一个顶点,对角线上另一个顶点,颜色,宽度
    #cv.circle(img,center=(x+w//2,y+h//2),radius=w//2,color=(23,255,255),thickness=3)圆形绘制
img = cv.imread('filename')
fac_detect_demo()
cv.imshow('detect',img)
cv.waitKey(0)
cv.destroyAllWindows

2.打开摄像头进行人脸检测

代码如下(示例):

import numpy as np
def face_detect_demo(image):
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    face_detector = cv.CascadeClassifier('E:/opencv/data/haarcascades/haarcascade_frontalface_alt_tree.xml')
    faces = face_detector.detectMultiScale(gray, 1.02, 5)
    for x, y, w, h in faces:
        cv.rectangle(image, (x, y), (x+w, y+h), (0, 255, 255), 2)
    cv.imshow("result", image)
capture = cv.VideoCapture(0)
cv.namedWindow("result", cv.WINDOW_AUTOSIZE)
while (True):
    #按帧读取视频,ret,frame是获cap.read()方法的两个返回值。其中ret是布尔值,如果读取帧是正确的则返回True,如果文件读取到结尾,它的返回值就为False。frame就是每一帧的图像,是个三维矩阵。
    ret, frame = capture.read()
    # cv.flip函数表示图像翻转,沿y轴翻转, 0: 沿x轴翻转, <0: x、y轴同时翻转
    frame = cv.flip(frame, 1)
    face_detect_demo(frame)
    c = cv.waitKey(10)
    if c == 27:#当键盘按下‘ESC’退出程序
        break
cv.waitKey(0)
cv.destroyAllWindows()

标签:img,python,检测,opencv,人脸,cv,255
来源: https://www.cnblogs.com/bruce1992/p/16514421.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有