Не удается получить координаты прямоугольника dlib из детектора лиц mmod

Я использую пример mmod_faces_detection и безуспешно пытаюсь получить координаты прямоугольников лиц, вот что я делаю:

std::vector<rectangle> getFacesVec(matrix<rgb_pixel> img)
{
    net_type net;
    deserialize("mmod_human_face_detector.dat") >> net; 

    std::vector<rectangle> r; 
    while(img.size() < 1800*1800)
        pyramid_up(img);

    auto dets = net(img);
    for (auto&& d : dets) {
        r.push_back(d.rect);
    }
    return r;
}

    ....
faces = getFacesVec(img);
for (auto f : faces) {
    cout << "Rect left: " << f.left() << endl;
    cout << "Rect right: " << f.right() << endl;
    cout << "Rect top: " << f.top() << endl;
    cout << "Rect bottom: " << f.bottom() << endl;
    cout << "Rect width: " << f.width() << endl;
    cout << "Rect height: " << f.height() << endl;

    cv::Rect roi(f.left(), f.top() , f.right(), f.bottom());

    cout << "Trying to print cropped face" << endl;
    cout << "X = " << roi.x << " Y = " << roi.y << " Width = " << roi.width << " Height = " << roi.height << endl;
    cv::Mat crop = m(roi);

    sprintf(s, "%d.jpg", i++);
    cv::imwrite(s, crop);
}

и я получаю координаты из области изображения следующим образом: Строки матов: 432 Столбцы матов: 768 Прямоугольник слева: 1068 Прямоугольник справа: 1914 Прямоугольник вверху: 480 Прямоугольник снизу: 1325 Ширина прямоугольника: 847 Высота прямоугольника: 846

Что я делаю не так?


person Ben Goz    schedule 10.12.2018    source источник


Ответы (1)


Вы выполнили pyramid_up для увеличения входного изображения, поэтому все координаты, которые вы получили, увеличиваются.

Вы можете захотеть увидеть исходный, изменив getFacesVec

std::vector<rectangle> getFacesVec(matrix<rgb_pixel> img)
{
    net_type net;
    deserialize("mmod_human_face_detector.dat") >> net; 

    std::vector<rectangle> r; 
    //while(img.size() < 1800*1800)
    //    pyramid_up(img);

    auto dets = net(img);
    for (auto&& d : dets) {
        r.push_back(d.rect);
    }
    return r;
}
person thachnb    schedule 10.12.2018
comment
Спасибо, это была проблема. - person Ben Goz; 11.12.2018