我想将一台相机用于两个进程/线程,例如
a )直播和
b )同时进行图像处理。
应用程序,可根据用户请求处理多个请求
a)用户可以请求 - 检测cam-1并进行实时流媒体
b)稍后,用户可以请求 - 使用相同的cam-1检测运动/图像处理,而过程(a)正在进行实时流式传输。
挑战我看到同时通过2个不同的进程访问同一个摄像头,有没有办法将Cam数据的数据/指针重新路由到不同的进程?
注意:OS -Windows
任何帮助将不胜感激! 此致,AK
答案 0 :(得分:0)
鉴于上述情况,一旦设计目标软件方法,就没有什么值得尊重的了。其中一个是事实,相机是一种装置,它限制它有一个负责指挥官#34;而不是允许有一个精神分裂的责任"几个并发的老板。
这就是解决方案,它是对所采集数据流的更智能设计,可以将其传递到几个并发的消费流程中。
有关此类设计概念的更多提示,read this Answer to a similarly motivated Question.
答案 1 :(得分:0)
避免让两个线程同时访问摄像机。
如果驱动程序允许,您可以使用多个缓冲区,以循环方式用于存储实时流。它们的内容可以连续发送到显示器,但是如果需要,您可以将其中一个放在一边并保留它以便进行更长时间的处理。
如果无法做到这一点,您可以在需要时将每个所需图像复制到处理缓冲区。
如果您的系统必须非常敏感并实时处理图像,则可能不需要两个线程!
在任何情况下,如果你使用两个线程,就不需要重新路由指针",只需让线程访问缓冲区。
如果它们是进程而不是线程,那么您可以在共享内存部分中建立缓冲区。