资源描述:
《金字塔LK光流算法.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、金字塔LK光流算法constintMAX_CORNERS=500;voidCImageExampleDlg::OnBnClickedButton8(){//TODO:AddyourcontrolnotificationhandlercodehereIplImage*imgA=cvLoadImage("F://program//Book//Chapter4//OpticalFlow0.jpg",CV_LOAD_IMAGE_GRAYSCALE);IplImage*imgB=cvLoadImage("F://program//Book//Chapter4//OpticalFlow1.j
2、pg",CV_LOAD_IMAGE_GRAYSCALE);CvSizeimg_sz=cvGetSize(imgA);intwin_size=10;IplImage*imgC=cvLoadImage("F://program//Book//Chapter4//OpticalFlow1.jpg",CV_LOAD_IMAGE_UNCHANGED);//Thefirstthingweneedtodoisgetthefeatures//wewanttotrack.//IplImage*eig_image=cvCreateImage(img_sz,IPL_DEPTH_32F,1);IplIm
3、age*tmp_image=cvCreateImage(img_sz,IPL_DEPTH_32F,1);intcorner_count=MAX_CORNERS;CvPoint2D32f*cornersA=newCvPoint2D32f[MAX_CORNERS];cvGoodFeaturesToTrack(imgA,eig_image,tmp_image,cornersA,&corner_count,0.01,5.0,0,3,0,0.04);cvFindCornerSubPix(imgA,cornersA,corner_count,cvSize(win_size,win_size)
4、,cvSize(-1,-1),cvTermCriteria(CV_TERMCRIT_ITER
5、CV_TERMCRIT_EPS,20,0.03));//CalltheLucasKanadealgorithm//charfeatures_found[MAX_CORNERS];floatfeature_errors[MAX_CORNERS];CvSizepyr_sz=cvSize(imgA->width+8,imgB->height/3);IplImage*pyrA=cvCreateImage(pyr_sz,IPL_DEPTH_32F,1);IplImage*pyrB=cvCreate
6、Image(pyr_sz,IPL_DEPTH_32F,1);CvPoint2D32f*cornersB=newCvPoint2D32f[MAX_CORNERS];cvCalcOpticalFlowPyrLK(imgA,imgB,pyrA,pyrB,cornersA,cornersB,corner_count,cvSize(win_size,win_size),5,features_found,feature_errors,cvTermCriteria(CV_TERMCRIT_ITER
7、CV_TERMCRIT_EPS,20,.3),0);//Nowmakesomeimageofwh
8、atwearelookingat://for(inti=0;i9、
10、feature_errors[i]>550){//printf("Erroris%f/n",feature_errors[i]);continue;}//printf("Gotit/n");CvPointp0=cvPoint(cvRound(cornersA[i].x),cvRound(cornersA[i].y));CvPointp1=cvPoint(cvRound(cornersB[i].x),cvRound(cornersB[
11、i].y));cvLine(imgC,p0,p1,CV_RGB(255,0,0),2);}cvNamedWindow("ImageA",0);cvNamedWindow("ImageB",0);cvNamedWindow("LKpyr_OpticalFlow",0);cvShowImage("ImageA",imgA);cvShowImage("ImageB",imgB);cvShowImage("LKpyr_OpticalFlow",imgC);}