#include"cv.h" #include"highgui.h" #include<iostream> using namespace std; double focus(IplImage* image); int main() { IplImage* previous1; IplImage* previous2; IplImage* previous3; IplImage* previous4; previous1=cvLoadImage("e://temporary/test01.bmp",1); previous2=cvLoadImage("e://temporary/test02.bmp",1); previous3=cvLoadImage("e://temporary/test03.bmp",1); previous4=cvLoadImage("e://temporary/test04.bmp",1); if(previous1!=0&&previous2!=0&&previous3!=0&&previous4!=0) { cvNamedWindow("previous1",1); cvShowImage("previous1",previous1); cvNamedWindow("previous2",1); cvShowImage("previous2",previous2); cvNamedWindow("previous3",1); cvShowImage("previous3",previous3); cvNamedWindow("previous4",1); cvShowImage("previous4",previous4); cout<<"The definition of the previous1 is: "<<focus(previous1)<<endl; cout<<"The definition of the previous2 is: "<<focus(previous2)<<endl; cout<<"The definition of the previous3 is: "<<focus(previous3)<<endl; cout<<"The definition of the previous4 is: "<<focus(previous4)<<endl; //關掉窗口,結束 cvWaitKey(0); cvDestroyWindow("previous1"); cvReleaseImage(&previous1); cvDestroyWindow("previous2"); cvReleaseImage(&previous2); cvDestroyWindow("previous3"); cvReleaseImage(&previous3); cvDestroyWindow("previous4"); cvReleaseImage(&previous4); return 0; } return -1; } double focus(IplImage* image) { IplImage* picone=cvCreateImage(cvGetSize(image),8,3); cvCvtColor(image,picone,CV_BGR2YCrCb); CvScalar gety; double z=0,zy1=0,zy2=0,total=0; double gety1=0,gety2=0; double final=0; for(int ix=0;ix<(picone->height);ix++) { gety1=0; gety2=0; zy1=0; zy2=0; for(int jy=0;jy<(picone->width);jy++) { gety=cvGet2D(picone,ix,jy); z=0.5*gety.val[0]-gety1+0.5*gety2+zy1-0.5*zy2; total=total+z; gety2=gety1; gety1=gety.val[0]; zy2=zy1; zy1=z; } } cvReleaseImage(&picone); final=abs(total/((image->height)*(image->width))); return final; }