三微授渔|Python超级教程,使用Python进行检测面部特征( 二 )


该get_frontal_face_detector()会返回一个detector就是我们可以用它来获取脸信息的功能 。 每个脸都是一个对象 , 其中包含可以找到图像的点 。 但是让我们更好地在代码上看到它:

三微授渔|Python超级教程,使用Python进行检测面部特征
本文插图

上面的代码将从图像中检索所有面部 , 并在每个面部上渲染一个矩形 , 从而产生如下图像:

三微授渔|Python超级教程,使用Python进行检测面部特征
本文插图

到目前为止 , 我们在发现人脸方面做得很好 , 但是我们仍然需要一些工作来提取所有特征(地标) 。 接下来让我们开始吧 。
步骤3:识别人脸特征
到目前为止 , DLib的工作方式一直非常神奇 , 仅用几行代码就可以实现很多目标 , 而现在我们有了一个全新的问题 , 它会继续变得如此容易吗?答案是肯定的!事实证明DLib提供了一个名为的功能shape_predictor() , 它将为我们做所有的魔术 , 但需要注意的是 , 它需要一个预先训练的模型才能起作用 。 有几种可以使用的模型shape_predictor , 可以在这里下载我正在使用的模型 , 但是也可以尝试其他模型 。 让我们看看新代码现在的样子

三微授渔|Python超级教程,使用Python进行检测面部特征
本文插图

像以前一样 , 我们始终以相同的代码为基础 , 现在对每个人脸使用预测函数来查找界标 。 现在我仍然在做一些奇怪的事情 , 例如27号在做什么?

三微授渔|Python超级教程,使用Python进行检测面部特征
本文插图

根据我们之前看到的图表 , 我们的预测函数将返回一个对象 , 其中包含与面部相符的所有68个点 , 如果你注意到它 , 则点27恰好在眼睛之间 , 因此 , 如果所有点都正确计算出 , 你应该像这样在眼睛之间看到一个绿色的点:

三微授渔|Python超级教程,使用Python进行检测面部特征
本文插图

我们已经很接近了 , 现在让我们渲染所有的点 , 而不仅仅是一个点:

三微授渔|Python超级教程,使用Python进行检测面部特征
本文插图

渲染结束:

三微授渔|Python超级教程,使用Python进行检测面部特征
本文插图

如果你对所有脸面点都不感兴趣怎么办?你可以调整range时间间隔以获取上述词汇表中指定的任何功能 , 就像我在这里所做的那样:

三微授渔|Python超级教程,使用Python进行检测面部特征
本文插图

步骤4:实时检测
下一步是连接我们的网络摄像头 , 并从你的视频流中进行实时地标识别 。 你可以通过使用相机遍历视频帧或使用视频文件来对面部进行实时面部标志检测 。 如果要使用自己的摄像机 , 请参考以下代码 , 但对于视频文件 , 请确保将数字0更改为视频路径 。 如果要结束窗口 , 请按键盘上的ESC键:

三微授渔|Python超级教程,使用Python进行检测面部特征
本文插图

最终效果:
即使在光线不足的情况下 , 结果也相当准确 , 更好的照明效果则更完美 。
结论
OpenCV和DLib是功能强大的库 , 可简化ML和计算机视觉的使用 。 今天 , 我们只是简单地介绍了基础知识 , 我还有很多东西要向他们学习 。 非常感谢您的阅读!


推荐阅读