2016-07-13 2 views
0

Я делаю проект в Emgu cv на C#.velX и velY в оптическом потоке (как их добавить)

Я застрял в этом первом шаге. Я вычислил оптический поток.HS и LK, и я не знаю, как добавить velx и vely, чтобы нарисовать их в кадре в виде точек и показать их в ImageBox.

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

Может ли кто-нибудь описать меня, что делать или даже лучше, какой-нибудь пример кода будет очень полезен? Я не хочу показывать цвет направления, только движение как точки в кадре.

ответ

0

Я нашел решение, поэтому, если кто-то нуждается в этом, это мой пример.

  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; 
Смежные вопросы