C++ 将图像从摄像机保存到硬盘

C++ 将图像从摄像机保存到硬盘,c++,video,real-time,C++,Video,Real Time,我有一个Firewire摄像头,其驱动程序软件将传入的图像存入一个包含16幅图像的循环缓冲区。我希望避免重新缓冲这些图像,并尽可能快地将它们写入磁盘。因此,我更愿意在每个缓冲区被填满时将一个指针放入队列,并有一个单独的磁盘写入线程,该线程保持在传入映像之前足够远的距离,以便确信它会在传入映像重写它们之前将它们写入磁盘 显然,这将取决于图像大小和帧速率。。。但原则上,对于每秒30帧的VGA图像,我们讨论的是需要每秒写入27.6 MB。这似乎是完全可以实现的,特别是如果写入线程可以决定删除偶尔的帧,

我有一个Firewire摄像头,其驱动程序软件将传入的图像存入一个包含16幅图像的循环缓冲区。我希望避免重新缓冲这些图像,并尽可能快地将它们写入磁盘。因此,我更愿意在每个缓冲区被填满时将一个指针放入队列,并有一个单独的磁盘写入线程,该线程保持在传入映像之前足够远的距离,以便确信它会在传入映像重写它们之前将它们写入磁盘

显然,这将取决于图像大小和帧速率。。。但原则上,对于每秒30帧的VGA图像,我们讨论的是需要每秒写入27.6 MB。这似乎是完全可以实现的,特别是如果写入线程可以决定删除偶尔的帧,以保持足够的领先于传入图像,并且如果此策略失败,则至少可以检测到覆盖已使图像无效,并发出相应的信号(例如,完成后删除文件)


欢迎对该策略的有效性发表评论。。。但我真正想知道的是,为了最大限度地提高磁盘写入率,应该使用哪些磁盘写入功能。例如,使用FILE\u FLAG\u NO\u BUFFERING+WriteFile()创建文件()?

也许这可以通过ofstream实现。你的驱动程序是如何填充阵列的?摄像机的数据(我相信)被DMA存储在内存中,对CPU没有明显的影响。只有一个写线程-我不知道是什么让我想到我会使用多个线程。@omatai哦,对不起,我又读了一遍我也不知道,我一定是出于某种原因想象出来的:)