Я хочу использовать алгоритм GrabCut, реализованный на OpenCV.
Как показано в документации, это сигнатура функции:
void grabCut(
InputArray img,
InputOutputArray mask,
Rect rect,
InputOutputArray bgdModel, // *
InputOutputArray fgdModel, // *
int iterCount,
int mode=GC_EVAL)
Параметр mode указывает, как инициализировать алгоритм: либо с помощью прямоугольника (ограничивающий прямоугольник), либо с помощью маски (матрица, чья значения соответствуют пользовательским рисункам областей переднего плана/фона.
У меня уже есть цветовые модели как для FG, так и для BG, поэтому в идеале мне не нужно предоставлять маску или прямоугольник, а использовать эти модели в качестве инициализации (я хочу, чтобы OpenCV не вычислял новые модели и вместо этого использовал мои ). Я вижу, что параметры bgdModel и fgdModel каким-то образом содержат эту информацию о модели. К сожалению, документация не содержит подробностей о том, как там хранится информация о модели.
Можно ли заполнить эти модели существующими данными и запустить метод с mode=GC_EVAL
?, если да, то как мне нужно кодировать модели?