c# – 如何从脸部检测方块获取“mugshot”?

我正在构建一个应用程序,它将拍摄一个人的整个身体的形象,并将为该人生产一个“mugshot”。

Mugshot意味着人的整个脸部,颈部,头发和耳朵的图像在同一个大小的另一个mugshot。

目前我正在使用
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

作为我的瀑布

我使用所有的级联,因为一个级别将不会检测到我所有的面孔。在我得到所有级联检测到的所有面孔后,我发现我的平均广告位,并用于我最后猜测这个mugshot应该是多高和宽。

我的问题是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);
}

我只需要摆脱那些误报。

确定这4个问题。

>我们将要使用的相机目前已经不能使用,所以我目前没有一种捕获图像的方法。在哪里可以找到不纯净的人的全身图像,如谷歌的图像搜索全身图像?
编辑:“人站立”做一个很好的搜索:)

一个级联可以做你所有的级联,如果它是这样设置的,加上它不给你几个结果来判断。您使用的级联可能与收集他们制作的教学图片或某些参数不同。

可以找到关于如何构建自己的级联的教程here.获取用于训练您使用的四个级联的图片将是有用的,但我不知道它们是否可公开。

http://stackoverflow.com/questions/5723159/how-to-obtain-a-mugshot-from-face-detection-squares

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:c# – 如何从脸部检测方块获取“mugshot”?