如何从面部检测方块获得“面部照片”?

| 我正在构建一个应用程序,该应用程序将拍摄一个人的整个身体的图像,并为该人生成一个“面部照片”。 面部照片的含义是该人的整个脸,脖子,头发和耳朵的图像,其大小与另一个面部照片相同。 目前我正在使用 http://askernest.com/archive/2008/05/03/face-detection-in-c.aspx 实施OpenCV,我正在使用
harrcascade_frontalface_default.xml  
harrcascade_frontalface_alt.xml  
harrcascade_frontalface_alt2.xml  
harrcascade_frontalface_alt_tree.xml
如我的小瀑布。 我使用所有的级联,因为一个级联不会检测到我的所有面孔。在所有级联都检测到所有面孔之后,我找到了我的平均正方形,并用它来最终猜测面部照片应该有多高和多宽。 我的问题是3个部分。 我当前的过程相当缓慢。如何加快检测过程? 编辑:我发现处理时间与照片尺寸直接相关。减小照片尺寸可能会有所帮助。 单个层叠不会检测到我遇到的所有面孔,因此我正在使用所有面孔。当然,这会产生许多不同的平方和一些误报。我可以使用什么方法来识别误报并将其排除在均方算之外?例如 编辑:我正在实现标准偏差内的平均值。即将发布代码。 考虑到脸部的平方坐标,我不确定要找到面部照片的最佳方法。在哪里可以找到面部照片比例? 编辑:解决了这个问题。假设我所有的头都是脸的比例。
static public Rectangle GetMugshotRectangle(Rectangle rFace)
{
    int y2, x2, w2, h2;

    //adjust as neccessary
    double heightRatio = 2;

    y2 = Convert.ToInt32(rFace.Y - rFace.Height * (heightRatio - 1.0) / 2.0);
    h2 = Convert.ToInt32(rFace.Height * heightRatio);
    //height to width ratio is 1.25 : 1 in mugshots
    w2 = Convert.ToInt32(h2 * 4 / 5);
    x2 = Convert.ToInt32((rFace.X + rFace.Width / 2) - w2 / 2);

    return new Rectangle(x2, y2, w2, h2);
}
我只需要消除那些误报。 确定,使这四个问题。 我们将要使用的摄像头目前无法使用,因此我目前没有捕获图像的方法。在哪里可以找到不像Google那样的纯粹的人搜索全身图像的人的全身图像? 编辑:\“人员站立\”进行了很好的搜索:)     
已邀请:
如果以此方式进行设置,则单个级联可以完成所有级联的工作,此外,它不能给您提供几个可以判断的结果。您所使用的叶栅在制作它们的教学图片或某些参数方面可能有所不同。 您可以在此处找到有关如何构建自己的级联的教程。获取用于训练您使用的四个级联的图片会很有用,但我不知道它们是否公开可用。     
好的,我知道了,但是该项目暂时处于冰上。 我没有粘贴源,因为VM需要永久加载。 如果有人真的有兴趣,请告诉我,我会发布。 如果您发现可以做得更好的事情,请告诉我。 我采取的步骤如下。 加载图像,如果高度或宽度大于500像素,请制作一个缩小至最大500px高度或宽度的新图像。保存比例。 在Harrtraining的所有正面Harrcasscades上的Ask Ernest上运行C#OpenCV实现。 由于某些原因,Ask Ernest制作的矩形需要放大1.3倍 对于生成的矩形,使用标准偏差消除误报。我对矩形的每个角进行了此操作,以查找每个矩形角与平均角位置的距离。我记下了一个矩形,该矩形有一个不规则的角,并将其从候选矩形列表中删除。 从其余矩形中获取平均矩形,并在问题中从上方应用\“ GetMugshotRectangle \”。 使用我们在第1步中保存的比例,将面部快照矩形比例放大。 从原始图像中剪切面部照片并将其保存到新位置。 做完了!     
我建议您使用上身Haar级联文件,该文件将使您返回矩形直到肩膀。 请在\“ http://alereimondo.no-ip.org/OpenCV/34 \”中找到“头和肩膀”级联文件。     

要回复问题请先登录注册