Я хочу удалить фон из видео человека, используя ffmpeg
или Python
.Если я записываю видео в любом месте, определите человека на видео и затем удалите все, кроме этого человека.Не запрашивать зеленый или одноцветный фон, как это можно сделать с помощью кеинга, и я не ищу этого.
Я пробовал этот подход (https://tryolabs.com/blog/2018/04/17/announcing-luminoth-0-1/), но он дает мне вывод прямоугольной формы)Это достаточно информативно, так как область исследования достаточно узкая, но все равно нужно удалить общий фон. Я также пробовал grabcut
(https://docs.opencv.org/4.1.0/d8/d83/tutorial_py_grabcut.html), но это требует взаимодействия с пользователем, в противном случае результат не слишком хороший.Я также попытался использовать ffmpeg
и нашел этот пример (http://oioiiooixiii.blogspot.com/2016/09/ffmpeg-extract-foreground-moving.html), но для этого требуется неподвижное изображение, поэтому я попытался сделать фоновый снимок, прежде чем записывать видео с человеком, но есть много вещей, необходимых для различия между фономкадр с изображением и видео.
Для подхода opencv
я пробовал это.
img = cv.imread('pic.png')
mask = np.zeros(img.shape[:2], np.uint8)
bgdModel = np.zeros((1, 65), np.float64)
fgdModel = np.zeros((1, 65), np.float64)
rect = (39, 355, 1977, 2638)
cv.grabCut(img, mask, rect, bgdModel, fgdModel, 5, cv.GC_INIT_WITH_RECT)
mask2 = np.where((mask==2)|(mask==0), 0, 1).astype('uint8')
img = img*mask2[:, :, np.newaxis]
plt.imshow(img), plt.colorbar(), plt.show()
Но это тоже удаляет часть человека. Также пробовал ffmpeg
способ, но нехороший результат.
ffmpeg -report -y -i "img.jpg" -i "vid.mov" -filter_complex "[1:v]format=yuva444p,lut=c3=128[video2withAlpha],[0:v][video2withAlpha]blend=all_mode=difference[out]" -map "[out]" "output.mp4"
Все, что мне нужно, это просто снимок / видео человека под любым обычным фоном без взаимодействия с пользователем, например выбора области или любого другоготакая вещьLuminoth
имеет обученные данные, но это дает ящик человека, а не человека, чтобы я мог удалить.Будем благодарны за любую помощь или руководство по удалению фона.