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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
|
#include <stdio.h>
#include <cv.h>
#include <highgui.h>
int main()
{
IplImage* ImTemp1=NULL;
IplImage* source1=NULL;
IplImage* ImTemp2=NULL;
IplImage* source2=NULL;
CvCapture *input_video = cvCaptureFromFile("video.avi");
cvSetCaptureProperty(input_video, CV_CAP_PROP_POS_FRAMES,10);
ImTemp1=cvCloneImage(cvQueryFrame(input_video));
cvSetCaptureProperty(input_video, CV_CAP_PROP_POS_FRAMES,11);
ImTemp2=cvCloneImage(cvQueryFrame(input_video));
source1 = cvCreateImage(cvGetSize(ImTemp1), IPL_DEPTH_8U, 1);
source2 = cvCreateImage(cvGetSize(ImTemp2), IPL_DEPTH_8U, 1);
cvCvtColor(ImTemp1, source1, CV_BGR2GRAY);
cvCvtColor(ImTemp2, source2, CV_BGR2GRAY);
cvNamedWindow("Pic1", CV_WINDOW_AUTOSIZE);
cvShowImage("Pic1", source1);
cvNamedWindow("Pic2", CV_WINDOW_AUTOSIZE);
cvShowImage("Pic2", source2);
IplImage* velocityX=NULL;
IplImage* velocityY=NULL;
velocityX = cvCreateImage(cvGetSize(source1), IPL_DEPTH_32F, 1);
velocityY = cvCreateImage(cvGetSize(source1), IPL_DEPTH_32F, 1);
cvCalcOpticalFlowBM(source1, source2, cvSize(4, 4), cvSize(1, 1), cvSize(4, 4), 0, velocityX, velocityY);
cvNamedWindow("Horizontal", CV_WINDOW_AUTOSIZE);
cvShowImage("Horizontal", velocityX);
cvNamedWindow("Vertical", CV_WINDOW_AUTOSIZE);
cvShowImage("Vertical", velocityY);
cvDestroyWindow("Pic1");
cvDestroyWindow("Pic2");
cvDestroyWindow("Horizontal");
cvDestroyWindow("Vertical");
cvReleaseImage(&ImTemp1);
cvReleaseImage(&ImTemp2);
cvReleaseImage(&source1);
cvReleaseImage(&source2);
cvReleaseImage(&velocityY);
cvReleaseImage(&velocityX);
cvReleaseCapture(&input_video);
return 0;
} |
Partager