逐帧保存网络摄像头视频



有没有一种解决方案可以通过命令行从USB网络摄像头捕获视频,并将每个帧保存在本地文件夹中的jpeg文件中?还是应该使用opencv?

到目前为止,我已经设法用这个系统调用将流保存到一个avi文件中:

avconv -f video4linux2 -s 640x480 -i /dev/video0 video1.avi

为了得到一个单一的帧,我可以使用这个:

fswebcam -r 640x480 --jpeg 85 -D 1 shot.jpg

问题是,如果我把最后一个命令放在一个循环中,我每秒只能得到一帧。由于avconv命令能够以30fps的速度保存avi文件而没有问题,我想如果我找到了正确的命令,它也能够以30fps的速度保存jpeg文件序列。

我知道有一个命令可以将视频文件中的单个帧保存为jpeg格式,而且效果很好:

avconv -i video1.avi -r 30 -f image2 out_%04d.jpg

然而,如果我尝试这个:

avconv -i /dev/video0 -r 30 -f image2 out_%04d.jpg

我得到这个错误:

/dev/video0: Operation not permitted

有解决方案吗?

感谢

不确定这是否有帮助,但在openshot中,您可以导入视频并将其转换为图像序列。序列被导出到同一目录中的一个文件夹中,每个帧都是一个png。我只在openshot的gui中使用过它,但我不知道命令行的用法。在gui中,只需右键单击导入的视频文件,就可以选择转换为图像序列。

最新更新