我有一个PS3 Eye网络摄像头,能够根据分辨率提供高达120次的帧数。
我需要对每个帧进行一些处理,目前这需要花费很多时间。 网络摄像头设置为60 fps,每帧处理时间约为16 ms,但由于处理瓶颈,我每秒只能检索大约30帧。
在幕后,while循环从摄像头检索位图数据,并设置位图属性,并通知已检索到新帧,因此如果处理时间过长,图像将不会叠加。
我想我应该能够以某种方式使用线程来使处理“更快”。
也许就像这样
你们认为使用任务并行库可能会提高性能吗?
提前致谢!
答案 0 :(得分:1)
你的想法应该有效。从理论上讲,你现在应该能够“加倍”并达到理想的60FPS。
一个问题:
哎呀,现在是什么,两个都很忙。因此,您可能希望将第3个线程充当“服务器”,它可以获取图像,队列并将它们提供给您“工作”线程。
答案 1 :(得分:1)
线程应该有帮助,模型是生产者 - 消费者问题
维基百科 - http://en.wikipedia.org/wiki/Producer-consumer_problem
我在研究中做的与我从高速摄像机(~360 fps)读取时完全相同,需要快速处理每一帧。我有一个线程设置只是从相机读取,然后填充到队列(生产者)。随着图像的添加,计数信号量会增加。然后我有几个消费者(通常是三个)然后从队列中提取图像,处理数据和更新模型。