Detecting a hierarchy of face elements
As part of our face detection algorithm, we will reject cat faces that intersect with human faces. The reason is that the cat face cascade produces more false positives than the human face cascade. Thus, if a region is detected as both a human face and cat face, it is probably a human face in reality. To help us check for intersections between face rectangles, let's write a utility function, intersects
. Declare the function in a new header file, GeomUtils.h
, with the following code:
#ifndef GEOM_UTILS_H #define GEOM_UTILS_H #include <opencv2/core.hpp> namespace GeomUtils { bool intersects(const cv::Rect &rect0, const cv::Rect &rect1); } #endif // !GEOM_UTILS_H
Two rectangles intersect if (and only if) a corner of one rectangle lies inside the other rectangle. Create another file, GeomUtils.cpp
, with the following implementation of the intersects
function in the file:
#include "GeomUtils.h" bool GeomUtils::intersects(const cv::Rect ...