#include"cv.h"
#include"highgui.h"
#include<iostream>
using namespace std;
double focus(IplImage* image);
int sum = 0;
int main()
{
IplImage* previous1;
IplImage* previous2;
IplImage* previous3;
IplImage* previous4;
previous1=cvLoadImage(".\\temporary\\test01.bmp",1);
previous2=cvLoadImage(".\\temporary\\test02.bmp",1);
previous3=cvLoadImage(".\\temporary\\test03.bmp",1);
previous4=cvLoadImage(".\\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;
cout<<"the num is";
cout<<sum;
//關掉窗口,結束
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),IPL_DEPTH_8U,3);
cvCvtColor(image,picone,CV_BGR2YCrCb);
CvScalar gety;
int width = picone->width;
int height = picone->height;
double z=0,zy1=0,zy2=0,total=0;
double gety1=0,gety2=0,gety3=0;
double final=0.0f;
for(int ix=0;ix<height;ix++)
{
gety1=0;
gety2=0;
gety3=0;
zy1=0;
zy2=0;
for(int jy=0;jy<width;jy++)
{
gety=cvGet2D(picone,ix,jy);
z=0.5*gety.val[0]-gety1+0.5*gety2+zy1-0.5*zy2;
if(z>=0) total+=z;
else total=total-z;
gety2=gety1;
gety1=gety.val[0];
zy2=zy1;
zy1=z;
sum+=1;
}
}
cvReleaseImage(&picone);
final=(total/(height*width));
return final;
}