【问题标题】:OpenCV Sample Program lkdemoOpenCV 示例程序 lkdemo
【发布时间】:2010-09-25 06:24:59
【问题描述】:

参考,OpenCv\samples\c\lkdemo.c

有人知道下面的sn-p代码是做什么的吗?

从 lkdemo.c 中提取的代码

 for( i = k = 0; i < count; i++ )
            {
                if( add_remove_pt )
                {
                    double dx = pt.x - points[1][i].x;
                    double dy = pt.y - points[1][i].y;

                    if( dx*dx + dy*dy <= 25 )
                    {
                        add_remove_pt = 0;
                        continue;
                    }
                }

                if( !status[i] )
                    continue;

                points[1][k++] = points[1][i];
                cvCircle( image, cvPointFrom32f(points[1][i]), 3, CV_RGB(0,255,0), -1, 8,0);
            }
            count = k;

第一季度。

粗线有什么作用? >> 点[1][k++] = 点[1][i];

为什么是 k++ ?我很困惑,认为下一点被覆盖 当前点

第二季度。

随着框架循环绘制cvCircle id,旧点在哪里清除,新点在哪里绘制?

期待您的意见。

谢谢 =)

【问题讨论】:

    标签: c++ opencv opticalflow


    【解决方案1】:

    第一季度:

    如果我重构代码也许会有所帮助:

    if( status[i] ) {
        points[1][k++] = points[1][i];  // <---- Q1
        cvCircle( image, cvPointFrom32f(points[1][i]), 3, CV_RGB(0,255,0), -1, 8,0);
    }
    

    所以在问题 1 的行中,i 总是递增(它由循环递增)但 k 仅在 status[i] 为真时递增。简而言之,它通过复制它们来消除数组中status[i]为假的任何点,然后将数组的长度(计数)设置为k,即通过消除的数字。

    【讨论】:

      【解决方案2】:

      它正在消除任何漂移超过 5 个像素 (5*5=25) 的点。 k 用于跟踪点被删除时的输出索引。

      【讨论】:

        【解决方案3】:

        我设法弄清楚点的清除完成的位置。 随着帧循环,新点反映在新帧和新帧上 帧刷新上一个。

        【讨论】:

          【解决方案4】:

          已经过时了,但为了协议 -

          现在有一个适用于 iPhone 的开源 Lucas Kanade 应用程序 - http://www.success-ware.com/150842/Lucas-Kanade-Detection-for-the-iPhone

          它也使用了 lkdemo 代码,并在其周围添加了一些附加功能。

          您将在上面的链接中找到指向 AppStore 上的应用和项目源代码的链接。

          任何人, 干杯,

          奥德

          【讨论】:

            【解决方案5】:

            让我看看我是否明白。此块代码消除了 status[i] 为假的任何点,即在前一个图像中但在当前图像中未找到的点。但是这样做,我们在跟踪中失去了这些点,不是吗?我的意思是,如果我们正在跟踪一个具有 N px 的对象,那么每次迭代我们都会丢弃点。这是一个好方法吗?为什么要这样做?

            【讨论】:

              猜你喜欢
              • 2012-07-25
              • 2018-09-09
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-10-29
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多