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->height);
if(mse==0)
{
printf("第%d帧:相似度100%", num);
printf("\n");
}

本文介绍了在VS2008环境下,利用OpenCV 2.4.4库计算图像的峰值信噪比(PSNR)的方法。文章指出,通过计算两幅图像像素差的绝对值来评估图像质量,通常会将图像转换为单通道以降低计算复杂性,并非每一帧都需要进行测试。

5870

被折叠的 条评论
为什么被折叠?



