确定哪个相机在多相机设置中检测到运动

  • 本文关键字:相机 运动 设置 java camera
  • 更新时间 :
  • 英文 :


我有一个设置,该设置应该能够同时运行多个摄像机。这些摄像机检测对象(不是以oo的方式,而是像椅子一样的物理对象),并给出这些对象独特的ID。

但是,我正在考虑如何确定从哪个相机检测到运动。之所以需要的原因是因为如果某物(可能是人类或物体)从camera1转移到camera2,则ID应该保持不变。

我没有解决方案,这就是为什么我问你。但是,我的设置看起来像这样。

public class Camera extends Thread{
    public int cameraID;
    private ImageHandling imgHandling;
    public void run(){
       while(true){
          //read images from camera
          .
          .
          .
          imgHandling.initialize(this);
          //imgHandling does all the image analysis and also handles the tracking AND the motion detection. This should not be relevant for this question.
          //The identification of different movements is also done in the imageHandling.
       }
    }
}

这意味着每个相机都将拥有自己的图像手工艺类。另外,每个相机都是线程,并且图像的获取旨在在运行方法中。另外,每个摄像机都有一个唯一的ID,即,如果设置具有3个相机,则ID为1、2和3。

我正在Java编程,但我认为解决方案必须是特定于语言的。

基于聊天中的其他信息,基本问题更多地符合"我们如何跟踪移动对象"而不是"我们如何找出哪个相机检测到的运动"。

为了完整,"我们如何找出检测到哪个相机的运动"实际上很容易(并且基本上涵盖了问题)。将Camera实例传递到ImageHandling类。

发生的事情会变得更加有趣...

一旦摄像机检测到运动,您真正需要做的是要拥有一个跟踪一个移动对象的MovingObject类。显然,某些经理需要保留Movingobjects的列表。

猜测您会有类似的东西:

class MovingObject
{
    Camera    firstDetectedOn;
    int       speed;
    int       directionOfMotion;
    int       width;
    int       height;
}

然后,经理需要变得聪明并允许对象合并。例如如果在摄像头1上似乎是一个对象,然后在相机2上可以看到类似的对象(大小/方向/速度),那么它们也许是同一对象,而不是2个单独的对象。再加上物理布局 - 如果CAM2在CAM1的东部,并且CAM1中的对象向东移动,那么与CAM1中的对象向西移动的可能性更大。

一种方法可能是将项目保留为独特的对象,并记录它们"可能"相同的地方。如果对象消失了CAM1,但您知道它可能是CAM2上的对象,那么您实际上可以假设它是相同的。

最新更新