图片模糊度判断程序(C++opencv)
Posted 云计算和大数据收集
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图片模糊度判断程序(C++opencv)相关的知识,希望对你有一定的参考价值。
//#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", 1); previous2 = cvLoadImage("D:/2222/1 (2).jpg", 1); previous3 = cvLoadImage("D:/2222/1 (3).jpg", 1); previous4 = cvLoadImage("D:/2222/1 (4).jpg", 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; }
以上是关于图片模糊度判断程序(C++opencv)的主要内容,如果未能解决你的问题,请参考以下文章