VS2008 opencv2.4.4
照例,先看代码:
//psnr.cpp
#include <cv.h>
#include <highgui.h>
#include <math.h>
#include <stdio.h>
using namespace cv;
using namespace std;
void psnr(IplImage * src, IplImage * dst, int num)
{
IplImage * src_gray = cvCreateImage(cvGetSize(src), src->depth, 1);
IplImage * dst_gray = cvCreateImage(cvGetSize(src), src->depth, 1);
cvCvtColor(src, src_gray, CV_RGB2GRAY);
cvCvtColor(dst, dst_gray, CV_RGB2GRAY);
IplImage * img_gray = cvCreateImage(cvGetSize(src_gray), src_gray->depth, 1);
cvAbsDiff(src_gray, dst_gray, img_gray);
CvScalar scalar;
double sum = 0;
for(int i=0; i<img_gray->height; i++)
{
for(int j=0; j<img_gray->width; j++)
{
scalar = cvGet2D(img_gray, i, j);
sum += scalar.val[0]*scalar.val[0];
}
}
double mse = 0;
mse = sum/(img_gray->width * img_gray-&g