Я пытаюсь улучшить обнаружение лица из захвата камеры, поэтому я подумал, что было бы лучше, если бы перед процессом обнаружения лица я удалил фон с изображения, Я использую BackgroundSubtractorMOG
и CascadeClassifier
с lbpcascade_frontalface
для определения лица,Обнаружение лица после фоновой субтракции с использованием openCv
Мой вопрос: как я могу захватить изображение переднего плана, чтобы использовать его в качестве входного сигнала для обнаружения лица? это то, что я до сих пор:
while (true) {
capture.retrieve(image);
mog.apply(image, fgMaskMOG, training?LEARNING_RATE:0);
if (counter++ > LEARNING_LIMIT) {
training = false;
}
// I think something should be done HERE to 'apply' the foreground mask
// to the original image before passing it to the classifier..
MatOfRect faces = new MatOfRect();
classifier.detectMultiScale(image, faces);
// draw faces rect
for (Rect rect : faces.toArray()) {
Core.rectangle(image, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(255, 0, 0));
}
// show capture in JFrame
frame.update(image);
frameFg.update(fgMaskMOG);
Thread.sleep(1000/FPS);
}
Благодарности
отлично, вчера вечером я понял, что могу использовать copyTo ... Я также добавил эрозию, чтобы избежать шума, спасибо –