如何使用OpenCV Python模糊图像中的人脸?
为了让图像中的人脸模糊,我们首先使用haar级联分类器检测人脸。OpenCV提供了不同类型的已训练好的haarcascade来进行对象检测。我们使用 haarcascade_frontalface_alt.xml 作为haar级联xml文件。为了模糊人脸区域,我们应用 cv2.GaussianBlur() 。
如何下载Haarcascade?
可以在GitHub网站( https://github.com/opencv/opencv/tree/master/data/haarcascades )找到不同的haarcascade级联。要下载用于人脸检测的 haarcascade ,请点击 haarcascade_frontalface_alt.xml 文件,然后以原始格式打开,右击并保存。
步骤
按照以下步骤模糊图像中的人脸:
- 导入所需库。在以下所有示例中,所需的Python库是 OpenCV 。请确保您已经安装了它。
-
使用 cv2.imread() 读取输入图像。指定完整的图像路径。
-
为面部检测初始化一个haar级联分类器,如下所示: face_cascade = cv2.CascadeClassifier()。 给出haar级联xml文件的完整路径。您可以使用 haarcascade_frontalface_alt.xml 在图像中检测人脸。
-
使用 face_cascade.detectMultiScale() 在输入图像中检测人脸。它以 (x,y,w,h) 格式返回检测到的人脸的坐标。
-
为检测到的人脸定义 roi ,例如 image[y:y+h,x:x+w] ,并将高斯模糊应用于 roi 。将模糊处理的人脸添加到原始图像中以获取最终图像。
-
打印带有被模糊处理的人脸的图像。
让我们看一些例子,以便更加清晰地理解。
注意 :您必须将“haar cascade XML files”放在正确的文件夹中非常重要。在这里,我们将XML文件放在名为“haarcascades”的文件夹中。
示例
在此示例中,我们模糊输入图像中检测到的人脸。
输入图像
将下面的图像视为上述示例中使用的输入图像 ‘ man3.jpg ‘。
输出结果
执行后,将产生以下输出: 输出结果 −
然后我们得到以下窗口,在图像中显示模糊的人脸-
示例
以下Python程序演示了如何模糊输入图像中的人脸。
输入图像
我们将使用以下图像作为该程序的输入文件−
执行后,会产生以下 输出 :
然后,我们得到以下显示输入图像中模糊面部的窗口请注意,所有15个面部的大小都不同。所有不同的脸部都已被模糊。
然后,我们得到以下显示输入图像中模糊面部的窗口请注意,所有15个面部的大小都不同。所有不同的脸部都已被模糊。
注意 − 为了更好的面部检测,请调整detectMultiScale()函数使用的第二个和第三个参数。