python版opencv摄像头人脸实时检测方法

以下是Python版OpenCV摄像头人脸实时检测方法的完整攻略,包括两个示例:

Python版OpenCV摄像头人脸实时检测方法

步骤1:导入必要的库

需要导入必要的库,包括cv2和numpy。可以使用以下代码导入这些库:

import cv2
import numpy as np

步骤2:加载人脸检测器

需要加载人脸检测器。可以使用以下代码加载人脸检测器:

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

在这个示例中,我们使用cv2.CascadeClassifier()方法加载名为haarcascade_frontalface_default.xml的人脸检测器。

步骤3:打开摄像头

需要打开摄像头。可以使用以下代码打开摄像头:

cap = cv2.VideoCapture(0)

在这个示例中,我们使用cv2.VideoCapture()方法打开摄像头。

步骤4:实时检测人脸

需要实时检测人脸。可以使用以下代码实时检测人脸:

while True:
    ret, img = cap.read()
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)
    for (x,y,w,h) in faces:
        cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
    cv2.imshow('img',img)
    k = cv2.waitKey(30) & 0xff
    if k == 27:
        break
cap.release()
cv2.destroyAllWindows()

在这个示例中,我们使用while循环实时读取摄像头的图像。我们使用cv2.cvtColor()方法将图像转换为灰度图像。我们使用face_cascade.detectMultiScale()方法检测人脸。我们使用cv2.rectangle()方法在图像上绘制矩形框。最后,我们使用cv2.imshow()方法显示图像,并使用cv2.waitKey()方法等待按键。如果按下ESC键,我们使用cap.release()方法释放摄像头,使用cv2.destroyAllWindows()方法关闭所有窗口。

示例1:实时检测人脸

以下是实时检测人脸的示例:

import cv2
import numpy as np

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
cap = cv2.VideoCapture(0)

while True:
    ret, img = cap.read()
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)
    for (x,y,w,h) in faces:
        cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
    cv2.imshow('img',img)
    k = cv2.waitKey(30) & 0xff
    if k == 27:
        break
cap.release()
cv2.destroyAllWindows()

在这个示例中,我们使用while循环实时读取摄像头的图像。我们使用cv2.cvtColor()方法将图像转换为灰度图像。我们使用face_cascade.detectMultiScale()方法检测人脸。我们使用cv2.rectangle()方法在图像上绘制矩形框。最后,我们使用cv2.imshow()方法显示图像,并使用cv2.waitKey()方法等待按键。如果按下ESC键,我们使用cap.release()方法释放摄像头,使用cv2.destroyAllWindows()方法关闭所有窗口。

示例2:保存检测到的人脸图像

以下是保存检测到的人脸图像的示例:

import cv2
import numpy as np

face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
cap = cv2.VideoCapture(0)

while True:
    ret, img = cap.read()
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    faces = face_cascade.detectMultiScale(gray, 1.3, 5)
    for (x,y,w,h) in faces:
        cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
        roi_gray = gray[y:y+h, x:x+w]
        roi_color = img[y:y+h, x:x+w]
        cv2.imwrite("face.jpg", roi_color)
    cv2.imshow('img',img)
    k = cv2.waitKey(30) & 0xff
    if k == 27:
        break
cap.release()
cv2.destroyAllWindows()

在这个示例中,我们使用while循环实时读取摄像头的图像。我们使用cv2.cvtColor()方法将图像转换为灰度图像。我们使用face_cascade.detectMultiScale()方法检测人脸。我们使用cv2.rectangle()方法在图像上绘制矩形框。我们使用cv2.imwrite()方法保存检测到的人脸图像。最后,我们使用cv2.imshow()方法显示图像,并使用cv2.waitKey()方法等待按键。如果按下ESC键,我们使用cap.release()方法释放摄像头,使用cv2.destroyAllWindows()方法关闭所有窗口。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python版opencv摄像头人脸实时检测方法 - Python技术站

(0)
上一篇 2023年5月14日
下一篇 2023年5月14日

相关文章

  • window7下的python2.7版本和python3.5版本的opencv-python安装过程

    1. Windows 7下的Python 2.7版本和Python 3.5版本的OpenCV-Python安装过程 在Windows 7操作系统下,我们可以使用Python 2.7版本和Python 3.5版本来安装OpenCV-Python。在本攻略中,我们将介绍如何在Windows 7下安装Python 2.7版本和Python 3.5版本的OpenCV…

    python 2023年5月14日
    00
  • python绘制饼图的方法详解

    当我们需要展示数据的占比关系时,饼图是一种常用的数据可视化方式。Python中绘制饼图的方法主要是使用matplotlib库中的pyplot块。本文将详细讲解绘制饼图的方法,包括图的基本概念、绘制图的步骤、绘制多个饼的方法以及示例。 饼图的基本概念 饼是一种常用的数据可视化方式,用于展示数据的占比关系。饼图通常由一个圆形和若干个扇形成,每个扇形的面积大小表示…

    python 2023年5月14日
    00
  • 使用python 的matplotlib 画轨道实例

    使用Python的Matplotlib画轨道实例 Matplotlib是Python中最流行的绘图库之一,可以用于绘制各种类型的图表,包括轨道图。本攻略将介绍如何使用Matplotlib绘制轨道图,并提供两个示例。 示例一:绘制圆形轨道 我们可以使用Matplotlib绘制圆形轨道。下面是一个绘制圆形轨道的示例: import matplotlib.pypl…

    python 2023年5月14日
    00
  • python numpy存取文件的方式

    NumPy是Python中用于科学计算的一个重要的库,它提供了高效的多维数组array和与之相关的量。在NumPy中,我们使用load()函数和save()函数读取和保存二进制文件。 读取二进制文件 使用NumPy的load()函数可以读取二进制文件,包括使用load()函数等。下面是一些示例: import numpy as np # 读取二进制文件 da…

    python 2023年5月14日
    00
  • 对numpy和pandas中数组的合并和拆分详解

    当我们在使用Numpy和Pandas时,经常需要对数组进行合并和拆分。下面将详细讲解Numpy和Pandas中数组的合并和拆分方式。 Numpy中数组的合并和拆分 合并数组 在Numpy中,我们可以使用numpy.concatenate()函数将两个或多个数组沿指定轴连接在一起。下面是一个示例: import numpy as np arr1 = np.ar…

    python 2023年5月13日
    00
  • 对numpy中的数组条件筛选功能详解

    对NumPy中的数组条件筛选功能详解 NumPy是Python中一个重要的科学计算库,提供了高效的多维数组和各种派生及算种函数。在NumPy中可以使用条件选功能来对数组进行筛选操作。本文将详细讲解NumPy中的数组条件筛选功能,包括使用布尔索引where()函数进行筛选,并提供了两个示例。 布尔索引 在NumPy中,可以使用布尔索引来对数组进行条件选。布索引…

    python 2023年5月13日
    00
  • python使用numpy中的size()函数实例用法详解

    NumPy是一个Python科学计算库,其中包含了许多用于数组操作的函数。其中,size()函数是一个非常常用的函数,它用于返回NumPy数组中元素的个数。以下是size()函数的实例用法详解: size()函数的基本用法 size()函数用于返回NumPy数组中元素的个数。以下是一个基本的使用示例: import numpy as np # 创建一个形状为…

    python 2023年5月14日
    00
  • Python数据分析之NumPy常用函数使用详解

    Python数据分析之NumPy常用函数使用详解 NumPy是Python中用于科学计算的一个重要库,它提供了高效的多维数组对象和各种派生对象,包括矩和张量等。本攻略将详细介绍Python NumPy模块的常用函数使用方法。 安装NumPy模块 使用NumPy模块前,需要先安装它。可以使用以下命令在命令中安装NumPy模块: pip install nump…

    python 2023年5月13日
    00
合作推广
合作推广
分享本页
返回顶部