2009-10-25 157 views
0

我已经有两个线程,很快就被三个程序,即试图从两个线程在同一时间网络摄像头获取的图像。有没有办法做到这一点,还是有更好的方法来做到这一点?如果你想两个线程都能够与图像工作,你应该写,让你的当前图像的方法(使用OpenCV的1.1)OpenCV的多线程调用

+1

嗯,你真的应该详细说明你的问题。你为什么试图在两个线程中同时获取相同的图像?您正在运行的代码是否存在特定的问题? – DeusAduro 2009-10-25 20:17:10

回答

0

。第一次调用方法时,可以从凸轮获取图像,并阻止调用,直到图像加载完毕。然后,您可以返回缓冲的图像,直到您想要获取下一个图像。这样,两个线程都走同样的路线到凸轮和OpenCV没有尝试开放连接到相机,如果你只阻塞而图像不加载多个线程可以得到的图像数据保存它在后同一时间。

1

我可能提议只是有你的线程中的一个(可以称之为主之一)聊到相机,获取图像,并把它全部搞定。一旦它被设置并放置在内存中的某个位置上,就可以通知第二个线程位于哪个位置(在此过程中使用互斥锁),并且这两个线程都可以关闭并执行处理。一旦这两个线程都完成了该映像(这里也使用互斥体),您可以让主线程获得另一个映像并启动该过程。

如果您的相机是生产大量的图片,并要开始工作了两个线程都完成之前,你可能要到三个线程...一个刚拿到的图像,而另外两个只是为了做两种类型的处理。这会变得更加复杂,因为你需要有多个缓冲区。您还可能会需要多个互斥体,可能几个队列太大,其所有可行的虽然:-)