如何使用OpenCV Python检测人脸并在其周围绘制边界框? 您所在的位置:网站首页 脸的轮廓怎么画图片 如何使用OpenCV Python检测人脸并在其周围绘制边界框?

如何使用OpenCV Python检测人脸并在其周围绘制边界框?

2024-06-18 16:22| 来源: 网络整理| 查看: 265

如何使用OpenCV Python检测人脸并在其周围绘制边界框?

使用haar级联分类器在图像中检测人脸。haar级联分类器是一种有效的基于机器学习的物体检测方法。我们可以为训练数据训练自己的haar级联,但在这里,我们使用已经训练好的haar级联进行人脸检测。

我们将使用 haarcascade_frontalface_alt.xml 作为进行人脸检测的”haar级联”XML文件。

如何下载Haarcascades?

您可以在GitHub网址中找到不同的haar级联 –

https://github.com/opencv/opencv/tree/master/data/haarcascades

要下载人脸检测的haar级联,请单击 haarcascade_frontalface_alt.xml 文件。以原始格式打开它,右键单击并保存。

注意 - 将所有haar级联XML文件保存在 haarcascades 文件夹中。

步骤

我们可以按照以下步骤检测图像中的人脸并在它们周围绘制边界框 –

使用所需的库导入。在下面的所有示例中,所需的Python库为 OpenCV 。请确保您已经安装了它。

使用 cv2.imread() 读取输入图像。指定完整的图像路径。

为人脸检测初始化一个Haar级联分类器对象 face_cascade = cv2.CascadeClassifier() 。 传递haar级联xml文件的完整路径。您可以使用haar级联文件 haarcascade_frontalface_alt.xml 来在图像中检测人脸。

使用 face_cascade.detectMultiScale() 检测输入图像中的人脸。它以 (x,y,w,h) 格式返回检测到的人脸的坐标。

使用 cv2.rectangle() 在原始图像的检测到的人脸周围绘制边界矩形。

显示带有绘制在脸周围的边框的图像。

让我们看一些示例以获得更清楚的理解。

例子

在这个Python程序中,我们检测一个人脸,并在检测到的人脸周围绘制一个边界框。

# 导入必要的库 import cv2 # 读取输入图片 img = cv2.imread('people.jpg') # 将每一帧转换为灰度 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 读取haacascade以检测输入图像中的脸部 face_cascade = cv2.CascadeClassifier('haarcascades\haarcascade_frontalface_alt.xml') # 检测输入图像中的脸部 faces = face_cascade.detectMultiScale(gray, 1.1, 2) print('检测到的脸部数量:', len(faces))\ # 遍历所有检测到的脸部 for (x,y,w,h) in faces: # 在检测到的脸部周围画一个矩形 cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,255),2) # 在窗口中显示一个图像 cv2.imshow('人脸检测',img) cv2.waitKey(0) cv2.destroyAllWindows()

将以下图片视为 输入文件 该程序的图像−

如何使用OpenCV Python检测人脸并在其周围绘制边界框?

输出

运行上述Python程序时,将生成以下 输出 窗口−

检测到的脸部数量: 1

我们得到以下 输出 窗口−

如何使用OpenCV Python检测人脸并在其周围绘制边界框?

脸部周围的边界框用黄色绘制。

例子

在此Python程序中,我们检测输入图像中的面部,并在检测到的面部周围绘制边界框。

import cv2 img = cv2.imread('window1.jpg') img1 =cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) ret,thresh = cv2.threshold(img1,170,255,0) # 画各种形状的椭圆 img = cv2.ellipse(img,(368,250),(100,40),30,0,180,(0,255,255),-1) img = cv2.ellipse(img,(150,170),(86,45),-30,0,360,(0,255,0),-1) img = cv2.ellipse(img,(578,250),(60,130),0,0,340,(0,0,255),-1) # 显示带有绘制椭圆的图像 cv2.imshow("Ellipses", img) cv2.waitKey(0) cv2.destroyAllWindows()

我们将使用该图像作为 输入文件 运行该程序−

如何使用OpenCV Python检测人脸并在其周围绘制边界框?

输出

编写上述Python程序并运行后,将生成以下 输出 窗口−

Number of detected faces: 15

我们得到以下输出窗口−

如何使用OpenCV Python检测人脸并在其周围绘制边界框?

黄色 是面部周围的边界框。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有