已关闭。此问题需要更多focused。当前不接受答案。
**想要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。
5天前关闭。
Improve this question
我想使用picamera和raspberryPi来记录图像序列,使用libcamera 2和openCV,帧率大约为2-3 Hz。相机提供4056 x 3040 x 3 uint 8数组。将数据以图像或视频的形式写入硬盘,大大限制了我的记录帧率。
当我尝试使用cv2.VideoWriter()
将图像附加到视频文件中时,将单个图像转换为视频格式会使每个帧增加大约一秒的时间。(无压缩)使用imwrite()
到硬盘我的帧率不稳定,大多数帧需要0. 5秒,而每10帧需要2-4秒。表面上,似乎不存在导致这些延迟的后台进程。
什么是最好的一般方法来写个别帧尽快到硬盘?有一个无压缩和快速格式的视频?
1条答案
按热度按时间2j4z5cfb1#
我猜你在循环中运行这个程序,磁盘写操作导致了延迟问题。这不是你的程序,而是操作系统必须抓取、分配和检查新的磁盘空间,这导致了偶尔的延迟峰值。它不是那么多的数据,所以有点令人惊讶。
你可以把写的内容放在自己的线程队列中,只要写的内容能跟上你想要输出的FPS,你就可以在一个一致的时间表上抓取帧,让写的人来处理延迟。
在下面的代码中,您需要修改数据的写入方式以满足您的需要,即用您希望写入的数据替换
with open...
。在主程序中,创建一个
ThreadWriter
对象,启动它,然后将数据推送到循环中的线程。