我想知道是否有人对 Python 和视频处理有任何经验。本质上,我想知道是否有任何库可以让我在视频中进行场景检测?如果没有,是否有任何可以让我将视频分成一系列帧并让我弄乱像素的方法?
谢谢!
我想知道是否有人对 Python 和视频处理有任何经验。本质上,我想知道是否有任何库可以让我在视频中进行场景检测?如果没有,是否有任何可以让我将视频分成一系列帧并让我弄乱像素的方法?
谢谢!
OpenCV有 Python 绑定;我认为它没有构建任何场景边界算法/函数,但您绝对可以使用它来编写自己的。
您可以使用 FFmpeg 进行场景检测并获取更改帧及其时间戳。该命令可以与 python 脚本结合使用,您可以根据自己的用例对其进行修改。
您可以简单地使用以下命令:
ffmpeg inputvideo.mp4 -filter_complex "select='gt(scene,0.3)',metadata=print:file=time.txt" -vsync vfr img%03d.png
这将仅将相关信息保存在 time.txt 文件中,如下所示,并按顺序保存镜头更改图像:
frame:0 pts:108859 pts_time:1.20954
lavfi.scene_score=0.436456
frame:1 pts:285285 pts_time:3.16983
lavfi.scene_score=0.444537
frame:2 pts:487987 pts_time:5.42208
lavfi.scene_score=0.494256
frame:3 pts:904654 pts_time:10.0517
lavfi.scene_score=0.462327
frame:4 pts:2533781 pts_time:28.1531
lavfi.scene_score=0.460413
frame:5 pts:2668916 pts_time:29.6546
lavfi.scene_score=0.432326
帧是从开始检测到的镜头变化的序列号。此外,为您的用例选择适当的阈值(此处为 0.3)以获得正确的输出