1

我开发了 ac# 应用程序,它接收由 Kinect 设备生成的 streamRGB(640x480 速率:30fps)的输入。收到每一帧后,我将其作为 file.wmv 保存在磁盘上。当我在保存之前尝试操纵每一帧时,问题就开始了,因为流率为 30fps,操纵的操作持续了大约 200ms(所以我只能获得 5fps)。

我知道这是一个常见的问题。为了解决它,最常用的解决方案是什么?

4

1 回答 1

1

这是一个常见的问题,当您需要实时执行某些操作时会出现这种情况,但实际上速度太慢而无法实时处理。第一个也是最重要的“解决方案”是提高实时操作的性能,使其足够快,但这通常是不可能的。

更现实的选择是建立一个队列以在另一个线程上处理。这是消费者/生产者设计模式的完美示例,因为您可以生产帧并使用它们以尽可能快地进行处理。要卸载内存,您可以将帧写入文件磁盘并在使用时读取它们。

另请注意,位图背后的代码 GDI+ 是单线程的,并且会将有关图像操作的所有内容锁定到单个线程。这可以使用不同的进程(每个内核一个)进行迁移,以优化机器性能。

于 2013-06-14T09:53:21.687 回答