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

思路: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;
}

运行结果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值