【发布时间】:2011-08-09 01:15:19
【问题描述】:
我正在构建一个应用程序,它将拍摄一个人的全身图像,并为该人生成一张“面部照片”。
面部照片是指一个人的整个面部、颈部、头发和耳朵的图像,与另一张面部照片的一般大小相同。
目前我正在使用
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
作为我的级联。
我使用所有级联,因为单个级联不会检测到我所有的脸。在我得到所有级联检测到的所有面部之后,我找到了我的平均平方,并用它来最终猜测面部照片应该有多高和多宽。
我的问题是三个部分。
我当前的进程相当缓慢。如何加快检测过程?
编辑:我发现处理时间与照片大小直接相关。减小照片的大小可能会有所帮助。单个级联无法检测到我遇到的所有面孔,因此我使用了所有面孔。这当然会产生许多不同的方块和一些误报。我可以使用什么方法来识别误报并将它们排除在平均平方计算之外?前任。
编辑:我正在实现标准偏差内的平均值。将很快发布代码。-
在给定面部的平方坐标的情况下,我不确定找到面部照片的最佳方法。我在哪里可以找到面部与照片的比例?
编辑:解决了这个问题。假设我所有的头都是他们的脸的比例。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 个问题。
-
我们将使用的相机目前无法使用,所以我目前没有捕捉图像的方法。我在哪里可以找到不是纯代名词的人的全身图像,就像谷歌的全身图像搜索一样?
编辑:“站立的人”是一个很好的搜索:)
【问题讨论】:
-
那是托马斯海登教堂吗?
-
是蜘蛛侠里的沙人哈哈
标签: c# face-detection