gpt4 book ai didi

python - 使用 ffmpeg 或 Python 从视频中删除随机背景

转载 作者:行者123 更新时间:2023-11-30 09:43:27 26 4
gpt4 key购买 nike

我想使用 ffmpegPython 从某人的视频中删除背景。如果我在任何地方录制视频,请检测视频中的人,然后删除除该人之外的所有内容。不要求绿色或单色背景,因为这可以通过色度键来完成,我不寻找这样的背景。

我已经尝试过这种( 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 有经过训练的数据,但给出的人框不是确切的人,以便我可以删除。任何有关删除背景的帮助或指导将不胜感激。

最佳答案

您可以尝试基于深度学习的方法。这是一个示例存储库:

https://github.com/TianzhongSong/Person-Segmentation-Keras

这将为您提供一个适合任意背景的人的面具。只需使用 opencv 加载图像并将它们通过网络即可。

关于python - 使用 ffmpeg 或 Python 从视频中删除随机背景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55916977/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com