码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2016-03-31 00:01:18      阅读:567      评论:0      收藏:0      [点我收藏+]

标签:

//#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)

标签:

原文地址:http://www.cnblogs.com/zangdalei/p/5339353.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!