请使用C++和OpenCV写一段程序,实现比较两张png图片的相似度
时间: 2024-05-05 19:16:18 浏览: 11
以下是使用C和OpenCV实现比较两张png图片相似度的程序:
```c
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
// 读取两张png图片
Mat img1 = imread("image1.png", IMREAD_GRAYSCALE);
Mat img2 = imread("image2.png", IMREAD_GRAYSCALE);
// 判断两张图片是否读取成功
if (img1.empty() || img2.empty()) {
cout << "Failed to load images!" << endl;
return -1;
}
// 计算两张图片的直方图
const int histSize[] = { 256 };
float range[] = { 0, 256 };
const float* histRange[] = { range };
Mat hist1, hist2;
calcHist(&img1, 1, 0, Mat(), hist1, 1, histSize, histRange);
calcHist(&img2, 1, 0, Mat(), hist2, 1, histSize, histRange);
// 比较两张图片的相似度
double similarity = compareHist(hist1, hist2, CV_COMP_CORREL);
// 输出相似度
cout << "Similarity: " << similarity << endl;
return 0;
}
```
该程序首先读取两张png图片,然后使用OpenCV的calcHist函数计算两张图片的直方图,最后使用compareHist函数比较两张图片的相似度。输出结果为相似度值,值越接近1表示两张图片越相似,值越接近0表示两张图片越不相似。