我想每2秒从USB摄像头抓取一张图像并将其保存在视频文件中。我认为这个问题是:如果PC /笔记本电脑出现故障或由于某种原因停止,视频文件将不会关闭 - 所有图像都将丢失。
我的问题是:有没有办法将每个捕获的图像附加到视频文件并再次关闭文件以避免丢失? Opencv似乎不提供此功能 - 也不提供SFML。
我使用g ++和SFML在ubuntu中开发。
感谢。
答案 0 :(得分:0)
之前我遇到过这个问题。老实说,我没有深入研究它。我很确定video writer
中有一些未记录的部分可能包含您要查找的内容。但是,我可以为您提供一个适用于小视频的棘手解决方案。将每个cv::Mat
保存到std::vector
和每个帧(或每n帧),serialize
vector
保存到hard disk
。然后,完全清除vector
。完成后,deserialize
使用OpenCV video writer
将所有数据写入视频文件。{/ p>
无论如何,像我写的那样做是不好的。应该有另一个解决方案。您可以深入了解OpenCV代码,看看destructor
类的videoWriter
中发生了什么。