两幅图PSNR计算c++代码
时间: 2024-03-08 14:42:22 浏览: 31
以下是使用C++计算两幅图像PSNR的代码示例:
```cpp
#include <iostream>
#include <opencv2/opencv.hpp>
double calculatePSNR(const cv::Mat& img1, const cv::Mat& img2) {
cv::Mat diff;
cv::absdiff(img1, img2, diff);
diff.convertTo(diff, CV_32F);
cv::Mat squaredDiff = diff.mul(diff);
double mse = cv::mean(squaredDiff)[0];
double psnr = 10.0 * log10((255 * 255) / mse);
return psnr;
}
int main() {
cv::Mat img1 = cv::imread("image1.jpg");
cv::Mat img2 = cv::imread("image2.jpg");
if (img1.empty() || img2.empty()) {
std::cout << "Failed to load images." << std::endl;
return -1;
}
double psnr = calculatePSNR(img1, img2);
std::cout << "PSNR: " << psnr << " dB" << std::endl;
return 0;
}
```
请注意,上述代码使用了OpenCV库来处理图像。首先,我们定义了一个函数`calculatePSNR`,该函数接受两个输入图像,并返回它们之间的PSNR值。在主函数中,我们加载了两幅图像,并调用`calculatePSNR`函数来计算它们之间的PSNR值。最后,我们将PSNR值打印出来。