python opencv 人脸识别(第三部分:方框的绘制,实现人脸检测)

您所在的位置:网站首页 矩阵绘制方框测试工具 python opencv 人脸识别(第三部分:方框的绘制,实现人脸检测)

python opencv 人脸识别(第三部分:方框的绘制,实现人脸检测)

2024-07-10 15:14| 来源: 网络整理| 查看: 265

一、开发前准备

pycharm版本:2023.1 python版本:3.7.5 opencv-python版本:4.5.4.60

二、图像上方框的绘制

在图像上绘制方框的代码如下:

import cv2 img = cv2.imread('st.jpg') cv2.imshow('test', img) x, y, w, h = 100, 100, 100, 100 # 具体来说,pt1参数是矩形左上角的点的坐标,pt2参数是矩形右下角的点的坐标。这两个参数共同定义了矩形的位置和大小。 cv2.rectangle(img, pt1=(x, y), pt2=(x + w, y + h), color=(0, 0, 255), thickness=2) cv2.imshow('test', img) cv2.waitKey(0) cv2.destroyAllWindows()

完成效果如下图 在这里插入图片描述

cv2.rectangle()函数用于在图像上绘制矩形。pt1和pt2参数是定义矩形的两个对角点,分别表示矩形的左上角和右下角的坐标。

具体来说,pt1参数是矩形左上角的点的坐标,pt2参数是矩形右下角的点的坐标。这两个参数共同定义了矩形的位置和大小。

在上面的代码中,pt1的坐标为(x, y),表示矩形左上角的点的坐标为(x, y),pt2的坐标为(x+w, y+h),表示矩形右下角的点的坐标为(x+w, y+h)。因此,矩形的宽度为w,高度为h。

color参数定义了矩形的颜色,(0, 0, 255)表示蓝色。thickness参数定义了矩形的线宽,这里设置为2。

三、实现简单的人脸检测

实现人脸检测的代码如下:

import cv2 def face_detect_demo(face_img): # 灰度处理图像 gray_img = cv2.cvtColor(face_img, cv2.COLOR_BGR2GRAY) # 选择分类器 face_detect = cv2.CascadeClassifier(r'C:\python\venv\Lib\site-packages\cv2\data\haarcascade_frontalface_alt.xml') # 对灰度图进行特征提取 face = face_detect.detectMultiScale(gray_img) for x, y, w, h in face: cv2.rectangle(face_img, pt1=(x, y), pt2=(x + w, y + h), color=(0, 0, 255), thickness=2) cv2.imshow('test', face_img) img = cv2.imread('st.jpg') face_detect_demo(img) while True: if ord('f') == cv2.waitKey(0): break cv2.destroyAllWindows()

cv2.CascadeClassifier() 方法详解: 实现人脸检测需要用到OpenCV中的级联分类器CascadeClassifier来加载训练好的人脸检测器模型,训练好的模型保存在指 定路径下的XML文件中,比如我的就是C:\python\venv\Lib\site-packages\cv2\data\haarcascade_frontalface_alt.xml,可 以根据个人实际情况在下载了cv2库的python目录里面找到。

face_detect.detectMultiScale() 方法详解: 这行代码使用前面加载的人脸检测器face_detect对输入的灰度图像gray_img进行人脸检测,检测结果将存储在变量face中。

具体来说,detectMultiScale()函数采用滑动窗口的方式,在输入图像上搜索可能的人脸区域。该函数可以设置多个参数,用于控制人脸检测的灵敏度、最小检测尺寸、最大检测尺寸等。函数的返回值face是一个包含检测到的人脸矩形区域的列表,每个矩形用(x, y, w, h)表示,其中(x, y)是矩形左上角的坐标,w和h是矩形的宽度和高度。

关于人脸识别为什么要用灰度图的原因

在进行人脸识别任务时,一般需要将图像转换为灰度图像进行处理。这是因为:

1、灰度图像占用的存储空间更小,可以降低计算成本。灰度图像只有一个通道,每个像素只需要用一个字节表示,而彩色图像则需要三个通道,每个像素需要用三个字节表示。这意味着,使用灰度图像可以在不降低图像质量的情况下,大幅降低计算和存储的成本。

2、灰度图像可以去除颜色信息对识别的影响。在人脸识别中,颜色信息并不是识别人脸所必需的,反而会带来很多干扰。比如,同一个人在不同的光照条件下,肤色可能会有较大差异,这会使得人脸识别算法难以正确识别。使用灰度图像可以去除这些干扰,提高人脸识别的准确率。

3、灰度图像可以提高算法的鲁棒性。在彩色图像中,不同通道的像素可能会因为光照条件、白平衡等因素而出现较大差异。而在灰度图像中,所有像素都是单一的数值,可以更好地抵抗这些干扰,提高算法的鲁棒性。

综上所述,将彩色图像转换为灰度图像是进行人脸识别任务时的常见操作,可以提高计算效率、去除干扰,提高算法的准确性和鲁棒性。

四、总结

该部分讲了如何进行方框的绘制以及人脸检测功能是如何实现的

下一部分:1、视频检测;2、人脸信息的采集



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3