Обнаружение рта в Opencv обнаруживает несколько областей в Android

1

Я новичок в Android. Я использую opencv для обнаружения лица и рта человека. Не правильно определяет рот. Вы можете помочь мне в этом? Вот мой код:

mJavaDetectorLip = 
loadClassifier(R.raw.haarcascade_mcs_mouth,"haarcascade_mcs_mouth.xml", 
cascadeDir);
......
 Rect liparea = new Rect(new Point(20,20),new Point(mGray.width() - 20, 
  mGray.height() - 20 ));
 lipArea(mJavaLip,liparea,100);
  ......

вот мой код:

   private Mat lipArea(CascadeClassifier clasificator, Rect area, int 
    size) {
    Mat template = new Mat();
    Mat mROI = mGray.submat(area);
    MatOfRect mouths = new MatOfRect();
    Point lips = new Point();

    //isolate the eyes first
    clasificator.detectMultiScale(mROI, mouths, 1.1, 2, Objdetect.CASCADE_FIND_BIGGEST_OBJECT
            | Objdetect.CASCADE_SCALE_IMAGE, new Size(30, 30), new Size());

   Rect[] mouthArray = mouths.toArray();
    for (int i = 0; i < mouthArray.length;) {
        Rect e = mouthArray[i];
       e.x = area.x + e.x;
        e.y = area.y + e.y;
        Point center1 = new Point(e.x  + mouthArray[i].width * 0.5,
               e.y + mouthArray[i].height * 0.5);
        int radius = (int) Math.round(mouthArray[i].width / 2);
        Imgproc.circle(mRgba, center1, radius, new Scalar(255, 0, 0), 4, 8, 0);

new Scalar(0,255,0),1,8,0);

        return template;
    }

    return template;
}

Это не пребывание в одном месте, это движение вокруг всего лица.

Теги:
opencv
opencv3.0
face-detection

1 ответ

1

Это не пребывание в одном месте, это движение вокруг всего лица.

Это ожидаемое поведение, так как особенности рта очень ограничены и высока вероятность ложных срабатываний. Например, ваши глаза будут иметь такие же черты, как ваша губа. Чтобы смягчить эту проблему, документы OpenCV предполагают, что мы должны сначала обнаружить лица в данном кадре, если их несколько, то выбрать одно в зависимости от области прямоугольника лица или какого-либо другого параметра. После успешного обнаружения лица, разделите прямоугольник лица на половины и ищите губы только в нижней половине.

Это значительно повысит вашу точность, потому что черты лица Хаара довольно сложны и хорошо обучены. Сокращение вашего поискового домена от всей рамки до нижней половины лица также сэкономит время.

  • 0
    Работает только в ландшафтном режиме. Когда я перехожу в портретный режим, он обнаруживает губы где-то на плечах.
  • 0
    Я предполагаю, что это другая проблема, пожалуйста, отладьте кадры, переданные для обнаружения функции, а также убедитесь, что вы делаете рендеринг губ с правильной логикой. Попробуйте глубже отладить переменные, которые будут работать как в альбомном, так и в портретном режиме.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню