detectMultiScale with outputRejectLevels true doesn't return anything?
with min_neighbours to 2 and output reject levels to true the detectMultiScale doesn't seem to return any faces. Left it running for 20 min and it never finished.
However, if I change min_neighbours to 0 then it will return a crazy amount of faces, I let it run till 150000 but I stopped it at that point.
I read only that a bug was found relating to this? Not sure if it got fixed or if I'm doing something wrong? I have the latest opencv source compiled 3.1.
On a slightly separate note, the reason for me wanting to use the override is so that I can try and find the best image out of multiple images.
Extra Details:
Windows 10 x64
Opencv 3.1 x64 dlls.
Preview of the code.
const double scale_factor = 1.1;
const int min_neighbours = 2;
const int flags = CV_HAAR_FIND_BIGGEST_OBJECT | CV_HAAR_DO_CANNY_PRUNING | CV_HAAR_SCALE_IMAGE;
const Size min_size = Size(48, 48);
const Size max_size = Size();
std::vector<int> rejectLevels;
std::vector<double> levelWeights;
bool outputRejectLevels = true;
cv::Mat crop;
cv::Mat res;
cv::Mat largestFile;
if (cascade.empty() || image.empty()) {
return Rect();
}
std::vector<Rect> faces;
//old working code, now commented out
//cascade.detectMultiScale(image, faces, scale_factor, min_neighbours, flags, min_size, max_size);
//current attempt at getting weights and reject levels.
cascade.detectMultiScale(image, faces, rejectLevels, levelWeights, scale_factor, min_neighbours, flags, min_size, max_size, outputRejectLevels);