//上篇介绍了灰度直方图均衡化的一种方法,今天在介绍一种。
// 直方图均衡化.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "opencv2/opencv.hpp" int _tmain(int argc, _TCHAR* argv[]) { cvNamedWindow("src"); cvNamedWindow("EqualizeHist"); IplImage* src= cvLoadImage("F:\\Opencv_picture\\05.jpg"); cvShowImage("src", src); IplImage* dst= cvCreateImage( cvGetSize(src), src->depth, //IPL_DEPTH_8U; 3); //对每个通道均衡化 IplImage* redImage= cvCreateImage( cvGetSize(src), src->depth, 1); IplImage* blueImage= cvCreateImage( cvGetSize(src), src->depth, 1); IplImage* greenImage= cvCreateImage( cvGetSize(src), src->depth, 1); cvSplit(src, blueImage, greenImage, redImage, NULL); cvEqualizeHist(redImage, redImage); cvEqualizeHist(greenImage, greenImage); cvEqualizeHist(blueImage, blueImage); //多个单通道合并为多通道 cvMerge(blueImage, greenImage, redImage, NULL, dst); cvShowImage("EqualizeHist", dst); cvWaitKey(0); cvReleaseImage(&src); cvReleaseImage(&dst); cvReleaseImage(&redImage); cvReleaseImage(&blueImage); cvReleaseImage(&greenImage); return 0; }