Как улучшить падение фона OpenCV из двух изображений - PullRequest
0 голосов
/ 06 июня 2019

Я использую OpenCV с NodeJS (opencv4nodejs) и пытаюсь заменить фон из фотографий с веб-камеры (один с изображением и один без головы в кадре).

Мой код работает, но качество маски, по-видимому, бесполезно, потому что мне нужно применять более качественные фильтры, но я не уверен, что.

Вот мой простой код

const bgSubtractor = new cv.BackgroundSubtractorMOG2()

const back = cv.imread('/app/src/services/back.jpg').bgrToGray()
const face = cv.imread('/app/src/services/face.jpg').bgrToGray()

bgSubtractor.apply(back)
return bgSubtractor.apply(face)

Я их серо масштабировал, но это все. Я не прикрепляю отдельные изображения, так как хочу посмотреть, смогу ли я сделать общую модель, но намерение состоит в том, чтобы заменить фон тем, кто делает выстрел в голову, с помощью своей камеры, а затем попросил выпустить фоновый снимок (который может отличаться). Я не уверен, что можно получить приличное качество всего двумя изображениями.

Возможно, другой будет лучше? Я предполагаю, что если бы я мог правильно выровнять изображения, чтобы учесть незначительные сдвиги между кадрами и вычитанием, но, возможно, именно это делает cv.BackgroundSubtractorMOG2? Я работал с несколькими примерами, в которых используются фильмы, но результаты не оправдались.

1 Ответ

1 голос
/ 07 июня 2019

Как отметил @rayryeng, MOG2 Bg Subtractor должен быть обучен нескольким фоновым образцам, чтобы понять, что на самом деле является фоном.

Попробуйте следующим образом:

  1. сделать несколько фоновых изображений (довольно очевидно :))
  2. подайте им объект MOG скорость обучения> 0
  3. применить обученный MOG к вашей рамке со скоростью обучения = 0 для извлечения объектов переднего плана

Очень полезная ссылка, которая все объясняет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...