【问题标题】:Php Motion DetectionPhp 运动检测
【发布时间】:2011-03-09 16:35:18
【问题描述】:

是否可以使用php实现运动检测?

我不是 GD/图像库专家,但难道不能检测两个图像之间是否存在显着差异并触发警告吗?

【问题讨论】:

    标签: php


    【解决方案1】:

    我最近一直在处理这类问题。我已经设法在任何指定级别的分辨率下比较两个图像,并收集有关发生变化的位置的信息(如果有的话)。使用我的代码的示例。

    // setup two images to work with
    $i1 = new SimpleImage("./img/0392.jpg");
    $i2 = new SimpleImage("./img/0393.jpg");
    
    $state = new State(15, 8, $i1);
    $state = $state->difference(new State(15, 8, $i2), rgbColorDistance);
    $state->abs()->denoiseStdDev()->scale(10)->round(0);
    
    // $box will hold an array (x,y,w,h) that indicates location of change
    $box = $state->getBoundingBox($i1->getWidth(), $i1->getHeight());
    

    Examples and explanation on my blogpost

    View code and download from Github

    它仍然很初级,但它是我实现从网络摄像头更新的图像流中不断读取动作的更大目标的开始。

    【讨论】:

    • 您的代码现在已损坏。一些目录也丢失了,你能解决这个问题吗?
    【解决方案2】:

    我认为理论上你可以做到这一点,你可以拿出一个基本的图像比较。但是,在 PHP 中执行此操作并不是最佳选择,如果您想进行快速逐帧比较,则需要查看编译语言。

    作为一种基本的图像检测方法,您可以执行以下操作,

    灰度图像,每 x 个像素采样一次并进行比较(使用阈值)。然后计算变化百分比,如果超过 15%,你可以假设运动。

    这是一种粗略而基本的方法,但它似乎可以满足您的需求。

    【讨论】:

      【解决方案3】:

      发现了一些东西: http://phpmotiondetect.sourceforge.net/

      但我没有测试过。

      【讨论】:

        【解决方案4】:

        当然,您可以使用 imagecolorat 之类的方法从 2 个不同图像的像素中获取颜色。

        所以是的,你可以像我猜的任何其他语言一样做到这一点。

        【讨论】:

          猜你喜欢
          • 2013-07-11
          • 2013-10-08
          • 2012-11-15
          • 1970-01-01
          • 2013-02-22
          • 2021-10-27
          • 2018-11-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多