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;
}
运行结果:
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;
}
运行结果:
相关文章推荐
- python中使用OpenCV进行人脸检测的例子
- opencv 做人脸识别 opencv 人脸匹配分析
- 使用opencv拉伸图像扩大分辨率示例
- 基于C++实现kinect+opencv 获取深度及彩色数据
- OpenCV 2.4.3 C++ 平滑处理分析
- 利用Python和OpenCV库将URL转换为OpenCV格式的方法
- python结合opencv实现人脸检测与跟踪
- Python环境搭建之OpenCV的步骤方法
- Python实现OpenCV的安装与使用示例
- 在树莓派2或树莓派B+上安装Python和OpenCV的教程
- opencv-python学习一--人脸检测
- 在Ubuntu上安装OpenCV3.0和Python-openCV的经历
- OpenCV配置,从来没有这么简单!
- ubuntu下opencv和qt的安装配置
- OpenCV学习笔记(二十五)——OpenCV图形界面设计Qt+VS2008
- 分享一些OpenCV实现立体视觉的经验
- 关于OpenCv图像变换与基本图形检测
- "应用程序正常初始化失败"-0xc0150002 解决办法
- OpenCV->HSV色彩空间
- opencv 内存泄露