Joã*_*oso 5 c# opencv opticalflow computer-vision emgucv
我正在使用OpenCV包装器 - Emgu CV,我正在尝试使用光流实现运动跟踪器,但我无法找到一种方法来组合从OF算法检索的水平和垂直信息:
flowx = new Image<Gray, float>(size);
flowy = new Image<Gray, float>(size);
OpticalFlow.LK(currImg, prevImg, new Size(15, 15), flowx, flowy);
Run Code Online (Sandbox Code Playgroud)
我的问题是不知道如何组合垂直和水平运动的信息,以建立移动物体的跟踪器?一个新的形象?
顺便说一句,有一种简单的方法来显示当前帧的流信息?
提前致谢.
小智 9
这是我在youtube头部运动跟踪器视频教程中定义的功能.您可以找到视频附带的完整源代码
void ComputeDenseOpticalFlow()
{
// Compute dense optical flow using Horn and Schunk algo
velx = new Image<Gray, float>(faceGrayImage.Size);
vely = new Image<Gray, float>(faceNextGrayImage.Size);
OpticalFlow.HS(faceGrayImage, faceNextGrayImage, true, velx, vely, 0.1d, new MCvTermCriteria(100));
#region Dense Optical Flow Drawing
Size winSize = new Size(10, 10);
vectorFieldX = (int)Math.Round((double)faceGrayImage.Width / winSize.Width);
vectorFieldY = (int)Math.Round((double)faceGrayImage.Height / winSize.Height);
sumVectorFieldX = 0f;
sumVectorFieldY = 0f;
vectorField = new PointF[vectorFieldX][];
for (int i = 0; i < vectorFieldX; i++)
{
vectorField[i] = new PointF[vectorFieldY];
for (int j = 0; j < vectorFieldY; j++)
{
Gray velx_gray = velx[j * winSize.Width, i * winSize.Width];
float velx_float = (float)velx_gray.Intensity;
Gray vely_gray = vely[j * winSize.Height, i * winSize.Height];
float vely_float = (float)vely_gray.Intensity;
sumVectorFieldX += velx_float;
sumVectorFieldY += vely_float;
vectorField[i][j] = new PointF(velx_float, vely_float);
Cross2DF cr = new Cross2DF(
new PointF((i*winSize.Width) +trackingArea.X,
(j*winSize.Height)+trackingArea.Y),
1, 1);
opticalFlowFrame.Draw(cr, new Bgr(Color.Red), 1);
LineSegment2D ci = new LineSegment2D(
new Point((i*winSize.Width)+trackingArea.X,
(j * winSize.Height)+trackingArea.Y),
new Point((int)((i * winSize.Width) + trackingArea.X + velx_float),
(int)((j * winSize.Height) + trackingArea.Y + vely_float)));
opticalFlowFrame.Draw(ci, new Bgr(Color.Yellow), 1);
}
}
#endregion
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12086 次 |
| 最近记录: |