类似于Matlab中的图像均衡化函数,Opencv也有类似的函数,但却是不是很好用,具体代码如下:
#include "stdio.h"
#include "cv.h"
#include "highgui.h"
int main(int argc, char* argv[])
{
IplImage *img=cvLoadImage("1.jpg");
IplImage* img1 = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1);//创建目标图像
cvCvtColor(img,img1,CV_BGR2GRAY);
/*图像模式的转化,存在多种不同的模式,通过改变CV_BGR2GRAY来选择你想要的变换,也要注意通道数的变化*/
IplImage *dst=cvCloneImage(img1);
cvZero(dst);
dst->origin=img1->origin;
cvEqualizeHist(img1,dst);
/*直方图均衡化,只能是单通道的矩阵*/
cvNamedWindow("ImageShow1",1);
cvShowImage("ImageShow1",img1);
cvNamedWindow("ImageShow",1);
cvShowImage("ImageShow",dst);
cvWaitKey(0);
printf("Hello World!\n");
return 0;
}
具体结果如下: