【问题标题】:Multiple bounding boxes during Face Detection人脸检测期间的多个边界框
【发布时间】:2015-04-17 19:33:03
【问题描述】:

在人脸检测中,我尝试结合正面和轮廓检测器(使用 Viola-Jones 方法)。但是,该系统对一个人脸有两个不同的边界框。我使用了 groupRectangles 函数,它没有产生一个有界框而不是两个有界框的预期结果。请回复一些关于这个问题的建议?

【问题讨论】:

  • 如果你想将两个矩形合并为一个:if((profileFace && frontFace).width > 0) combinedFace = profileFace || frontFace; 将合并重叠的矩形。或者你最终想要达到什么目的?只需删除/忽略其中一个(哪个重要吗?)?如果图像中确实存在多个面部重叠的人,这两种方法都可能会出现问题,但也许您可以通过比较两个矩形的重心或检测单个面部(例如眼睛)的两个检测版本中的共同特征来处理这个问题区分多个矩形和多个面

标签: c++ opencv


【解决方案1】:

我认为 Micka 想编写按位运算而不是逻辑运算:

if((profileFace & frontFace).width > 0) 
    combinedFace = profileFace | frontFace; 

或者,如果矩形重叠很大,您可以合并矩形,即:

cv::Rect intersection = profileFace & frontFace;

// If the intersection is more then 80%, then use their intersection for further processing
if(std::min(intersection.area() / profileFace.area(), (intersection.area()) / frontFace.area()) > 0.8) {
    ...
}

【讨论】:

  • 我总是忘记哪些操作符对于矩形来说是重载的。任何逻辑如何以更好的方式记住它?谢谢
  • 我认为方法是返回值,它不符合逻辑(布尔值):)
猜你喜欢
  • 2011-06-25
  • 1970-01-01
  • 2012-04-17
  • 2016-02-25
  • 2019-06-18
  • 1970-01-01
  • 2020-09-20
  • 2020-11-01
  • 2019-08-02
相关资源
最近更新 更多