网络摄像头帧处理不同的线程

时间:2012-01-04 07:55:03

标签: c# image-processing webcam

我有一个应用程序在每个新框架上进行一些图像处理,最近我买了一个新的网络摄像头,与我的旧摄像头(360x240)相比,它具有非常好的1280x960,我的应用程序对每个新框架进行一些图像处理从网络摄像头,但具有如此高的分辨率,处理速度变慢,我的应用程序挂起。我想我可以在应用程序启动时开始说10个线程并从主线程中将每个帧裁剪为10个相等的部分并将其传递给工作线程,这样每个工作线程只需要处理帧的一小部分。

我的应用程序分析像素颜色并在找到正确的颜色时进行报告,因此我想通过线程重新创建它。

我之前使用过线程和线程池,但我不确定如何保持线程活动并在主线程运行时从主线程传递对象,因此任何一段代码都会有用,或者可能有更好的方法这个问题?

由于

1 个答案:

答案 0 :(得分:3)

这是“制片人 - 消费者”的经典案例......你的摄像头是“制作人”而线程是“消费者”......

在.NET(4)中有一个名为BlockingCollection的非常好的实现来轻松构建它 - 请参阅http://msdn.microsoft.com/en-us/library/dd997371.aspxhttp://msdn.microsoft.com/en-us/library/dd267312.aspx