2015-08-07 1 views
0

Я пытаюсь выяснить код обнаружения лица. Вот код, который я не могу понять:Что это означает об обнаружении лиц с помощью OpenCV

MatOfRect faces = new MatOfRect(); 

mJavaDetector.detectMultiScale(mGray, faces, 1.1, 2, 2, // TODO: objdetect.CV_HAAR_SCALE_IMAGE 
        new Size(mAbsoluteFaceSize, mAbsoluteFaceSize), new Size()); 
Rect[] facesArray = faces.toArray(); 

Я задаюсь вопросом, что делает «лицо» означает и почему должны превратить его в массив с помощью «faces.toArray»? Может ли кто-нибудь помочь мне? Большое спасибо.

+1

Похоже, что detectMultiScale обнаруживает несколько совпадений лиц во входном изображении mGray. Я не слишком уверен в деталях класса MatOfRect, но я думаю, что вы должны вызвать метод toArray(), чтобы получить обнаруженные грани в виде массива прямоугольников (каждый прямоугольник является обнаруженным лицом). Преобразование в массив, вероятно, упрощает итерацию по сравнению с совпадением. – Stralo

+0

Я согласен с @Stralo – Mido

ответ

0

Каскадный детектор Haar обнаруживает «лицо» из мгей (изображение) и сохраняет его в гранях (MatofRect), MatofRect имеет 4 точки, а именно (x, y, widht, height). Эти четыре точки можно использовать для рисования прямоугольника вокруг обнаруженного «лица». Возможно, существует несколько возможных совпадений, поэтому он хранится в массиве Rect.