我是JavaCV/OpenCV的新手,所以如果我是个十足的白痴,请提前道歉.
我需要检测图像中的“主/主”人脸(此图像大部分将是“配置文件图片”),人脸识别并不是必需的。
由于不同的HAAR级联文件每个检测到不同的面孔,而且检测到的人脸有时不是实际的人脸,而是图像中的任意工件,所以我需要决定使用哪一个人脸。假设检测到的人脸是真实的人脸,那么使用最大的人脸是有意义的,因为它是一个配置文件图片。
我遇到的主要问题是,代码检测到的(一些图像)更多的是一张脸,而最大的一张脸实际上根本就不是人的脸。这是我的一个测试中的一个例子,代码检测到两张脸,一张是真实的脸,另一张是女人的胸部,碰巧她的胸部比她的脸大。
脸:6084 java.awt.Rectangle[x=62,y=42,width=78,height=78] 区
半身:java.awt.Rectangle[x=86,y=144,width=80,height=80] 面积6400

总之,我的问题是,如果我有多个被检测到的面孔,我是否可以用某种等级来确定哪一张脸最符合OpenCV所认为的脸?
发布于 2013-11-01 20:58:39
不幸的是,人脸检测没有为您提供这样的选择。我想你的代码看起来是这样的:
CvSeq faces = cvHaarDetectObjects(grayImage, cascade, ......);因此,您可以得到一个CvSeq,它实际上只是一个指针,指向分隔脸的矩形序列。你不会再得到这方面的信息了。
通常,我会说胸部在头部下面(更重要的是,头部高于身体的其他部分),但在一些特殊情况下除外;
您可以简单地利用Y位置来丢弃半身像。
如果其他非身体部分的元素被检测为面部,那么你就注定要失败。
https://stackoverflow.com/questions/12330578
复制相似问题