Документация для функции заливки OpenCV гласит:
Функция использует и обновляет маску, поэтому вы берете на себя ответственность за инициализация содержимого маски. Наполнение потоком не может пройти через ненулевое пикселей в маске. Например, можно использовать выход реберного детектора в качестве маски, чтобы остановить заполнение по краям. Можно использовать один и тот же маска в нескольких вызовах функции, чтобы убедиться, что заполненная область не перекрывается.
Как функция обновляет маску? Устанавливает ли все пиксели в потоке заливки какое-то ненулевое значение?