#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;
}