Я пытаюсь сегментировать видео на передний план и фон. Предполагая, что мое видео имеет в основном лицо, я начинаю с детектора лица и использую все пиксели внутри детектора лица как вероятное начальное зерно для GrabCut.
Проблема в том, что иногда (в нескольких кадрах) детектор лица не обнаруживает лицо, хотя лицо определенно присутствует. Особенно, когда пользователь отводит взгляд от экрана и виден боковой профиль лица.
Есть ли этому решение?
Очевидный ответ, который мне пришёл в голову, также заключался в использовании бокового профиля Haar Classifier, но как мне их объединить? В том смысле, что в любой момент времени у меня должен быть либо передний профиль лица, либо боковой профиль (или его вообще нет).
Мне было интересно, есть ли какие-либо связанные значения достоверности с обнаруженными лицами, и поэтому я могу использовать обнаружение от каскада, которое дает более уверенное обнаружение.
есть (недокументированная) перегрузка для CascadeClassifier :: detectMultiScale ():
virtual void detectMultiScale( InputArray image,
CV_OUT std::vector<Rect>& objects,
CV_OUT std::vector<int>& rejectLevels,
CV_OUT std::vector<double>& levelWeights,
double scaleFactor,
int minNeighbors, int flags,
Size minSize, Size maxSize,
bool outputRejectLevels ) = 0;
rejectLevels должны быть значениями доверия, которые вы ищете