图片模糊度判断程序(C++、opencv)

时间:2023-01-27 04:03:49
//#include<opencv2\opencv.hpp>
//using namespace cv; #include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include "cv.h" using namespace cv;
using namespace std; double focus(IplImage* image); int main()
{
IplImage*previous1;
IplImage*previous2;
IplImage*previous3;
IplImage*previous4;
previous1 = cvLoadImage("D:/2222/1 (1).jpg", );
previous2 = cvLoadImage("D:/2222/1 (2).jpg", );
previous3 = cvLoadImage("D:/2222/1 (3).jpg", );
previous4 = cvLoadImage("D:/2222/1 (4).jpg", );
if (previous1 != && previous2 != && previous3 != && previous4 != ) {
cvNamedWindow("previous1", );
cvShowImage("previous1", previous1);
cvNamedWindow("previous2", );
cvShowImage("previous2", previous2);
cvNamedWindow("previous3", );
cvShowImage("previous3", previous3);
cvNamedWindow("previous4", );
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 ;
}
return -; }
double focus(IplImage*image) {
IplImage*picone = cvCreateImage(cvGetSize(image), , );
cvCvtColor(image, picone, CV_BGR2YCrCb);
CvScalar gety;
double z = , zy1 = , zy2 = , total = ;
double gety1 = , gety2 = ;
double final = ;
for (int ix = ; ix < (picone->height); ix++) {
gety1 = ;
gety2 = ;
zy1 = ;
zy2 = ;
for (int jy = ; jy < (picone->width); jy++) {
gety = cvGet2D(picone, ix, jy);
z = 0.5*gety.val[] - gety1 + 0.5*gety2 + zy1 - 0.5*zy2;
total = total + z;
gety2 = gety1;
gety1 = gety.val[];
zy2 = zy1;
zy1 = z;
}
}
cvReleaseImage(&picone);
final = abs(total / ((image->height)*(image->width)));
return final;
}