我有一个应用程序在每个新框架上进行一些图像处理,最近我买了一个新的网络摄像头,与我的旧摄像头(360x240)相比,它具有非常好的1280x960,我的应用程序对每个新框架进行一些图像处理从网络摄像头,但具有如此高的分辨率,处理速度变慢,我的应用程序挂起。我想我可以在应用程序启动时开始说10个线程并从主线程中将每个帧裁剪为10个相等的部分并将其传递给工作线程,这样每个工作线程只需要处理帧的一小部分。
我的应用程序分析像素颜色并在找到正确的颜色时进行报告,因此我想通过线程重新创建它。
我之前使用过线程和线程池,但我不确定如何保持线程活动并在主线程运行时从主线程传递对象,因此任何一段代码都会有用,或者可能有更好的方法这个问题?
由于
答案 0 :(得分:3)
这是“制片人 - 消费者”的经典案例......你的摄像头是“制作人”而线程是“消费者”......
在.NET(4)中有一个名为BlockingCollection
的非常好的实现来轻松构建它 - 请参阅http://msdn.microsoft.com/en-us/library/dd997371.aspx和http://msdn.microsoft.com/en-us/library/dd267312.aspx