opencv 直方图均衡化

Posted 柳安花明

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv 直方图均衡化相关的知识,希望对你有一定的参考价值。

将代码中的图片路径换成实际路径即可。

#include "stdafx.h"

#include "cv.h"
#include "highgui.h"

#include <highgui.h> 
#include <cv.h> 
using namespace std;

int main(int argc, char** argv)
{
int k;
IplImage* src = cvLoadImage("..\\4_3.jpg", 1);
IplImage* imgChannel[4] = { 0, 0, 0, 0 };
IplImage* dst = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 3);

if (src)
{
for (k = 0; k < src->nChannels; k++)
{
imgChannel[k] = cvCreateImage(cvGetSize(src), IPL_DEPTH_8U, 1); //要求单通道图像才能直方图均衡化 
}
//通道分离 
cvSplit(src, imgChannel[0], imgChannel[1], imgChannel[2], imgChannel[3]);//BGRA 
cout << "dst->nChannels:" << dst->nChannels;
for (k = 0; k < dst->nChannels; k++)
{
//直方图均衡化,原始图像和目标图像必须是单通道 
cvEqualizeHist(imgChannel[k], imgChannel[k]);
}

//通道组合 
cvMerge(imgChannel[0], imgChannel[1], imgChannel[2], imgChannel[3], dst);
cvNamedWindow("src", 1);
cvShowImage("src", src);
cvNamedWindow("Equalize", 1);
cvShowImage("Equalize", dst);

cvWaitKey(0);
//释放资源 
for (k = 0; k < src->nChannels; k++)
{
if (imgChannel[k])
{
cvReleaseImage(&imgChannel[k]);
//imgChannel[i] = 0; 
}
}
cvReleaseImage(&dst);
}

return 0;
}

 

以上是关于opencv 直方图均衡化的主要内容,如果未能解决你的问题,请参考以下文章

Opencv——直方图掩膜直方图均衡化详细介绍及代码实现

opencv学习-直方图均衡化

opencv 直方图均衡化

Python,OpenCV直方图均衡化以提高图像对比度

OpenCV之图像直方图均衡化

图像处理之直方图均衡化拉伸