OpenCV代码,用于彩色图像的直方图均衡化在YCbCr颜色空间。
#include<iostream>
#include "opencv2/imgcodecs.hpp"
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
using namespace std;
using namespace cv;
int main(){
Mat img = cv::imread("D:\\用户目录\\我的图片\\001.JPG");
if (img.empty()){
std::cout << "打开图片失败" << std::endl;
system("pause");
return -1;
}
imshow("img", img);
// 直方图均衡化
Mat matArray;
cvtColor(img, matArray, CV_BGR2YCrCb);
Mat imgYcbcr[3];
split(matArray, imgYcbcr);
equalizeHist(imgYcbcr[0], imgYcbcr[0]);
merge(imgYcbcr,3, matArray);
cvtColor(matArray, img, CV_YCrCb2BGR);
imshow("imgHist", img);
waitKey();
destroyAllWindows()
return 0;
}
输入img
输出img