Настройка точности для классификатора Haar-Cascade

Я использую классификатор Haar-Cascade Classifier для обнаружения лиц.

В настоящее время я сталкиваюсь с некоторыми проблемами со следующей функцией:

void ImageManager::detectAndDisplay(Mat frame, CascadeClassifier face_cascade){


    string window_name = "Capture - Face detection";
    string filename;

    std::vector<Rect> faces;
    std::vector<Rect> eyes;
    Mat frame_gray;
    Mat crop;
    Mat res;
    Mat gray;
    string text;
    stringstream sstm;


    cvtColor(frame, frame_gray, COLOR_BGR2GRAY);
    equalizeHist(frame_gray, frame_gray);

    // Detect faces
    face_cascade.detectMultiScale(frame_gray, faces, 1.1, 2, 0 | CASCADE_SCALE_IMAGE, Size(30, 30));

    // Set Region of Interest
    cv::Rect roi_b;
    cv::Rect roi_c;

    size_t ic = 0; // ic is index of current element


    for (ic = 0; ic < faces.size(); ic++) // Iterate through all current elements (detected faces)  
    {

        roi_c.x = faces[ic].x;
        roi_c.y = faces[ic].y;
        roi_c.width = (faces[ic].width);
        roi_c.height = (faces[ic].height);



        crop = frame_gray(roi_c);

        faces_img.push_back(crop);

        rectangle(frame, Point(roi_c.x, roi_c.y), Point(roi_c.x + roi_c.width, roi_c.y + roi_c.height), Scalar(0,0,255), 2);


    }

    imshow("test", frame);
    waitKey(0);

    cout << faces_img.size();


}

Рамка — это фотография, которую я пытаюсь отсканировать.

Face_cascade — это классификатор.


person Ema.jar    schedule 23.12.2014    source источник
comment
увеличьте параметр minNeighbours с 2 до 5, может быть (пока вы не начнете пропускать позитивы).   -  person berak    schedule 23.12.2014
comment
Вау, это работает. Спасибо   -  person Ema.jar    schedule 23.12.2014
comment
кстати, если вы обнаружите больше хороших ложных срабатываний, не стесняйтесь добавлять их сюда   -  person berak    schedule 28.12.2014


Ответы (1)


внутренне CascadeClassifier выполняет несколько обнаружений и группирует их.

minNeighbours (в вызове detectMultiScale) — это количество обнаружений примерно в одном и том же месте, которое необходимо считать действительным обнаружением, поэтому увеличьте его с текущих 2 до, может быть, 5 или около того, пока вы не начнете промахиваться. плюсы.

person berak    schedule 23.12.2014