您的位置:首页 > 运维架构

cvEqualizeHist() 直方图均衡化(多通道彩图)

2016-02-03 19:50 344 查看
思路:1.先把BGR彩图用cvSplit() 分解成三张单通道图像

    2.分别对三张单通道图像进行cvEqualizeHist() 

            3.用cvAddWeight()或者cvMerge()将3张单通道图像重新合并成彩色图像

测试用图:



程序代码:

#include <highgui.h>
#include<cv.h>
#include <opencv2/legacy/legacy.hpp>
using namespace std;

int main()
{
IplImage *img_in = cvLoadImage("test.jpg");
IplImage *img_red = cvCreateImage(cvGetSize(img_in),IPL_DEPTH_8U,1);
IplImage *img_blue = cvCreateImage(cvGetSize(img_in),IPL_DEPTH_8U,1);
IplImage *img_green = cvCreateImage(cvGetSize(img_in),IPL_DEPTH_8U,1);
IplImage *img_out = cvCreateImage(cvGetSize(img_in),IPL_DEPTH_8U,3);

cvNamedWindow("img_in",CV_WINDOW_AUTOSIZE);
cvShowImage("img_in",img_in);

cvSplit(img_in,img_blue,img_green,img_red,0);

cvEqualizeHist(img_blue,img_blue);
cvEqualizeHist(img_green,img_green);
cvEqualizeHist(img_red,img_red);

cvMerge(img_blue,img_green,img_red,0,img_out);
cvNamedWindow("img_out",CV_WINDOW_AUTOSIZE);
cvShowImage("img_out",img_out);

cvWaitKey(0);
cvDestroyAllWindows();
cvReleaseImage(&img_in);
cvReleaseImage(&img_blue);
cvReleaseImage(&img_green);
cvReleaseImage(&img_red);
cvReleaseImage(&img_out);

return 0;
}


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息