光流中的 velX 和 velY(如何添加它们)

Posted

技术标签:

【中文标题】光流中的 velX 和 velY(如何添加它们)【英文标题】:velX and velY in optical flow (how to add them) 【发布时间】:2016-07-13 20:01:12 【问题描述】:

我正在用 C# 在 Emgu cv 中做项目。

我已经坚持了这第一步。我计算了opticalflow.HS 和LK,但我不知道如何添加velx 和vely 以将它们作为点在帧中绘制并在ImageBox 中显示。

 OpticalFlow.HS(prev, frame1, true, velx, vely, 0.1d, new MCvTermCriteria(100));

有没有人可以描述我该怎么做,甚至更好的一些代码示例会有很大帮助?我不想显示方向的颜色,只显示帧中的点。

【问题讨论】:

【参考方案1】:

我找到了解决方案,所以如果有人需要这里就是我的例子。

         Image<Gray, Byte> coloredMotion2 = new Image<Gray, Byte>(frame1.Size);
          for (int i = 0; i < coloredMotion2.Width; i+=2)
          
              for (int j = 0; j < coloredMotion2.Height; j+=2)
              
                  dx = (int)CvInvoke.cvGetReal2D(velx, j, i);
                  dy = (int)CvInvoke.cvGetReal2D(vely, j, i);

                  int pomi = i + dx;
                  int pomj = j + dy;

                  if (i != pomi && j != pomj)
    // uncoment line below if you want lines but it needs rgb image not gray                            
   //CvInvoke.cvLine(coloredMotion, new Point(i,j),new Point(i+dx,j+dy), new   MCvScalar(255,0,0), 1, Emgu.CV.CvEnum.LINE_TYPE.CV_AA, 0);                          
  CvInvoke.cvCircle(coloredMotion2, new Point(pomi, pomj), 1, new MCvScalar(255,255,255), 1, Emgu.CV.CvEnum.LINE_TYPE.CV_AA, 0); 
                  
   motionImageBox.Image = coloredMotion2;

【讨论】:

以上是关于光流中的 velX 和 velY(如何添加它们)的主要内容,如果未能解决你的问题,请参考以下文章

如何使窗口在触摸屏幕边缘时弹回(修补程序)

Node.js游戏开发,客户端 - 服务器数据交换逻辑

结合背景减法和光流

用光流旋转物体?

如何确定光流所需的处理器速度?

OpenCV中的光流及视频特征点追踪