📜  使用 OpenCV 从图像中裁剪人脸 – Python(1)

📅  最后修改于: 2023-12-03 15:22:15.119000             🧑  作者: Mango

使用 OpenCV 从图像中裁剪人脸 – Python

OpenCV 是计算机视觉领域的一个流行的开源库。它可以用于图像处理、计算机视觉、机器学习等多个领域。本文将介绍如何在 Python 里使用 OpenCV 来裁剪一张图像中的人脸。

准备工作

首先,需要准备一张含有人脸的图像,并且安装好 Python 和 OpenCV 库。

安装 OpenCV 库可以通过以下命令来完成:

pip install opencv-python
代码实现

以下是使用 OpenCV 从图像中裁剪人脸的代码:

import cv2

# 加载 Haar 级联分类器
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

# 读取图像
img = cv2.imread('img.jpg')

# 转化为灰度图像
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 检测人脸
faces = face_cascade.detectMultiScale(gray, 1.3, 5)

# 裁剪人脸
for (x,y,w,h) in faces:
    roi_gray = gray[y:y+h, x:x+w]
    roi_color = img[y:y+h, x:x+w]

# 保存结果
cv2.imwrite('result.jpg', roi_color)

以上代码中,首先加载了一个称为 Haar 级联分类器的模型。这个模型是由 Viola-Jones 提出的,可以用来检测图像中的人脸。

接下来,读取了一张图像,并将其转化为灰度图像。对图像进行灰度转换是为了提高计算效率,同时只要人的脸颜色差不多,灰度图像对人脸的检测也没有影响。

然后使用级联分类器来检测人脸。detectMultiScale 函数可以用来检测图像中的所有人脸。它的输入参数包括灰度图像、人脸检测的缩放比例、检测结果的可信度等。其返回值是一个人脸的矩形框的列表。

最后,使用获得的人脸矩形框将人脸从原图像中提取出来,并保存结果。

总结

通过本文的介绍,我们了解了如何在 Python 中使用 OpenCV 和 Haar 级联分类器来裁剪一张图像中的人脸。OpenCV 有很多简单易用的函数,可以帮助我们完成很多计算机视觉任务。对于对计算机视觉感兴趣的读者来说,OpenCV 的学习是不可或缺的。