稠密光流跟踪

2017-10-29  本文已影响0人  zjh3029
#include <opencv2\opencv.hpp>
#include <iostream>
using namespace std;
using namespace cv;

int main()
{
  VideoCapture cap(0);
  if (!cap.isOpened())
      return -1;
  Mat matcher = imread("1.jpg");
  double minVal = -1;
  double maxVal;
  Point minLoc, maxLoc, matchLoc;

  Mat prevgray, gray, flow, cflow, frame;

  for (Mat img;waitKey(1)!=27;)
  {
      cap >> img;

      cvtColor(img, gray, CV_BGR2GRAY);
      if (prevgray.data)
      {
          calcOpticalFlowFarneback(prevgray, gray, flow, 0.5, 3, 5, 3, 5, 1.2, 0);
          for (int y = 0; y < img.rows; y += 10)
          {
              for (int x = 0; x < img.cols; x += 10)
              {
                  Point2f fxy = flow.at<Point2f>(y, x);
                  line(img, Point(x, y), Point(cvRound(x + fxy.x), cvRound(y + fxy.y)), Scalar(0,255,0));
                  circle(img, Point(x, y), 2, CV_RGB(255, 0, 0), -1);
                  imshow("FLOW", img);
              }
          }
      }
      std::swap(prevgray, gray);
  }
  return 0;
}
上一篇下一篇

猜你喜欢

热点阅读