使用 Python 和 OpenCV 探测图片上的人脸

本文介绍如何使用基于 Python 语言,使用 OpenCV 探测图片上的人脸,并把人脸图片裁切保存。

想法是这样的:识别一张图片(jpg或png格式)中的人脸,并把眼睛标记出来,如果识别出来了人脸了,就把这些人脸按照被发现的顺序,裁切保存为原图格式的小图。

环境

Windows 10+Python 3.x

准备

安装几个需要的 Python 库/包:

第一个包用于人脸识别,第二个包用于把识别出来的人脸裁切并保存。

创建一个目录,最好是英文名称,比如 Face-Detection,在这个目录下创建个叫xml 的目录,里面放两个文件:

回到 Face-Detection 目录,使用搜索引擎,搜索"合影",尽量选几张稍微大些的图,重命名为好输入的名字,比如 a.jpg, b.png。

代码

在 Face-Detection 目录下创建一个名字为 fb.py (Face Detection )的文件。把下面的代码粘贴进这个文件:

 

现在,Face-Detection 目录里,应该有这些文件了:

python-opencv-face-detection-0

 

测试

假如你的 Face-Detection 目录中已经有个叫 c.jpg 的某些人的合影,那就可以在Face-Detection 目录中使用下面任意一条命令来进行人脸探测了:

如上所示,在图片名称后面任意加一个参数的话,会看到 Python 使用 OpenCV 标记好的大图,如果没有这个附加参数的话,那就不会看到这个标记好的大图。

有没有额外参数,都会把探测到的人脸,按照发现的顺序,裁切后保存在 Face-Detection 目录下的 crops 目录中,如下所示:

python-opencv-face-detection

python-opencv-face-detection-2

上图中的人像来自搜索引擎搜索出来的一张合影照片,如侵权,请凭证联系我。

加上额外参数后,会看到标记好人脸和眼睛的大图,如下所示(所示为部分截图):

python-opencv-face-detection-3

人脸的识别还是准确的,眼睛的识别,不是太准确,不过关系不是太大了。


error: 错误信息!