#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;
}
网友评论