单个摄像头同时通过两个进程访问

时间:2017-10-24 02:05:33

标签: graphics parallel-processing computer-vision

我想将一台相机用于两个进程/线程,例如
a )直播和 b )同时进行图像处理。

用例:

应用程序,可根据用户请求处理多个请求 a)用户可以请求 - 检测cam-1并进行实时流媒体
b)稍后,用户可以请求 - 使用相同的cam-1检测运动/图像处理,而过程(a)正在进行实时流式传输。

挑战我看到同时通过2个不同的进程访问同一个摄像头,有没有办法将Cam数据的数据/指针重新路由到不同的进程?

注意:OS -Windows

任何帮助将不胜感激! 此致,AK

2 个答案:

答案 0 :(得分:0)

嗯,可行。但是..

鉴于上述情况,一旦设计目标软件方法,就没有什么值得尊重的了。其中一个是事实,相机是一种装置,它限制它有一个负责指挥官#34;而不是允许有一个精神分裂的责任"几个并发的老板。

这就是解决方案,它是对所采集数据流的更智能设计,可以将其传递到几个并发的消费流程中。

enter image description here

有关此类设计概念的更多提示,read this Answer to a similarly motivated Question.

答案 1 :(得分:0)

避免让两个线程同时访问摄像机。

如果驱动程序允许,您可以使用多个缓冲区,以循环方式用于存储实时流。它们的内容可以连续发送到显示器,但是如果需要,您可以将其中一个放在一边并保留它以便进行更长时间的处理。

如果无法做到这一点,您可以在需要时将每个所需图像复制到处理缓冲区。

如果您的系统必须非常敏感并实时处理图像,则可能不需要两个线程!

在任何情况下,如果你使用两个线程,就不需要重新路由指针",只需让线程访问缓冲区。

如果它们是进程而不是线程,那么您可以在共享内存部分中建立缓冲区。