光流中的 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(如何添加它们)的主要内容,如果未能解决你的问题,请参考以下文章