Я использую 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? Я работал с несколькими примерами, в которых используются фильмы, но результаты не оправдались.