1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
| void ComputerVision::processImage(IplImage * currentFrame)
{
//Copy current frame to the previous one and get a new one
cvCopy(currentMonochromeFrame, previousMonochromeFrame);
cvCopy(currentFrame, currentMonochromeFrame);
CvRect roi = cvRect(0,0,frameSize.width, (int)frameSize.height / 2.0);
cvSetImageROI(currentMonochromeFrame, roi);
cvSetImageROI(previousMonochromeFrame, roi);
cvSetImageROI(eigImage, roi);
cvSetImageROI(tempImage, roi);
cvSetImageROI(pyramid1, roi);
cvSetImageROI(pyramid2, roi);
cvGoodFeaturesToTrack(previousMonochromeFrame, eigImage, tempImage, previousFeatures, &featuresNumber, .01, .01, NULL);
//Compute the optical flow
cvCalcOpticalFlowPyrLK(previousMonochromeFrame, currentMonochromeFrame, pyramid1, pyramid2, previousFeatures,
currentFeatures, featuresNumber, opticalFlowWindow, MAXPYRAMIDS,
foundFeatures, errorFeatures,
termCriteria, ENHANCEMENTS);
cvResetImageROI(currentMonochromeFrame);
cvResetImageROI(previousMonochromeFrame);
} |
Partager