Я только что реализовал GrapCV-алгоритм (OpenCV, C ++, Visual Studio 12):
grabCut (* изображение, маска, прямоугольник, bgdModel, fgdModel, 1, GC_INIT_WITH_MASK
);
Я использовал это, чтобы сегментировать следующую картину:
Мой результат таков:
Мой вопрос: как мне теперь улучшить алгоритм, чтобы видеть только обоих игроков? Моей первой идеей было изменение глубины цвета, но я не знаю, как отправить его в «grabCut». Или есть другие способы?
В папке opencv2.4.6 / образцы / CPP, Есть много файлов, которые демонстрируют использование некоторых классических алгоритмов. Есть файл с именем grabcut.cpp в котором подробно рассказывается, как применить этот алгоритм к вашему приложению. Так что вам нужно просто вставить этот файл в вашу программу.
Если у вас есть другие вопросы, просто отладьте их с помощью grabcut.cpp, и вы увидите, как это работает в деталях. И если вы хотите реализовать это самостоятельно. вам нужно изменить функцию с новым параметром GC_EVAL
или же GC_INIT_WITH_MASK
,
grabCut(image, // input image
mask, // segmentation mask
rect,// rectangle containing foreground
bgModel,fgModel, // models
2, // number of iterations
GC_INIT_WITH_RECT); // use rectangle
Других решений пока нет …