请你扮演一个精通opencv的高手,使用opencv写一个c++代码,输入两个彩色图片名称分别为“原始图片.jpg”“待匹配图片.jpg”,完成彩色直方图匹配
时间: 2024-06-03 12:07:35 浏览: 11
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
// 读取原始图片和待匹配图片
Mat srcImg = imread("原始图片.jpg");
Mat tgtImg = imread("待匹配图片.jpg");
// 将两张图片转换为HSV颜色空间
Mat srcHsv, tgtHsv;
cvtColor(srcImg, srcHsv, COLOR_BGR2HSV);
cvtColor(tgtImg, tgtHsv, COLOR_BGR2HSV);
// 计算原始图片和待匹配图片的直方图
int histSize[] = {256, 256, 256};
float hranges[] = {0, 256};
const float* ranges[] = {hranges, hranges, hranges};
int channels[] = {0, 1, 2};
Mat srcHist, tgtHist;
calcHist(&srcHsv, 1, channels, Mat(), srcHist, 3, histSize, ranges, true, false);
calcHist(&tgtHsv, 1, channels, Mat(), tgtHist, 3, histSize, ranges, true, false);
// 将原始图片的直方图归一化
normalize(srcHist, srcHist, 0, 255, NORM_MINMAX);
// 计算原始图片和待匹配图片的累计直方图
Mat srcCumHist, tgtCumHist;
srcCumHist = srcHist.clone();
tgtCumHist = tgtHist.clone();
for (int i = 1; i < 256; i++)
{
for (int j = 0; j < 256; j++)
{
for (int k = 0; k < 256; k++)
{
srcCumHist.at<float>(i, j, k) += srcCumHist.at<float>(i - 1, j, k);
tgtCumHist.at<float>(i, j, k) += tgtCumHist.at<float>(i - 1, j, k);
}
}
}
// 进行直方图匹配
Mat lut(1, 256, CV_8U);
for (int i = 0; i < 256; i++)
{
int j = 255;
while (j >= 0 && tgtCumHist.at<float>(i) <= srcCumHist.at<float>(j))
j--;
lut.at<uchar>(i) = j;
}
// 对待匹配图片进行直方图匹配
Mat result;
LUT(tgtImg, lut, result);
// 显示结果
imshow("Original Image", srcImg);
imshow("Target Image", tgtImg);
imshow("Matched Image", result);
waitKey(0);
return 0;
}
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)