我有一组脸部图像,每张图像中有 1 个或有时 2 个脸部。我想做的是找到每张图像中的脸部,然后裁剪它。 我测试了几种方法,这些方法是使用 openCV 在 python 中实现的,但结果不太好。这些方法是:
我还测试了另一种模型,但我不允许发布两个以上的链接。 问题在于,这些基于 Haar 特征的算法对于面部尺寸并不鲁棒,当我在靠近面部拍摄的图像上尝试它们时,它们找不到任何面部。 有人提到尝试基于深度学习的算法,但我找不到与我想做的事情相对应的算法。基本上,我想我需要一个预先训练的模型,它可以为我提供图像中面部边界框的坐标,或者更好的是,一个预先训练的模型,它可以给出裁剪后的面部图像作为输出。
最佳答案
你不需要机器学习算法,图算法就足够了。例如Snapchat人脸识别算法的工作原理如下:
使用最常见面(“标准面”)的节点和边创建图形。
使图形变形/将节点重新坐标到输入图像中的拟合像素
瞧,您在输入图像中识别出了人脸。
说起来容易,但编码起来却很难。例如,我们在我们的大学实现了 Dijkstra 算法,如果您需要的话,我可以向您提供我的“图形”类(class)。但我是用 C++ 编写的。
使用这些图形算法,您可以更有效地裁剪脸部。
关于opencv - 从图像中裁剪脸部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46418297/