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