《学习 OpenCV》 第六章 练习16

3619阅读 0评论2012-06-10 duanlin
分类:C/C++


  1. #include <QCoreApplication>
  2. #include <QDebug>
  3. #include "opencv/highgui.h"
  4. #include "opencv/cvaux.h"

  5. int main(int argc, char *argv[])
  6. {
  7.   CvSize sz;

  8.   IplImage* img1 = cvLoadImage("Tulips.jpg");

  9.   sz.height = img1->height;
  10.   sz.width = img1->width;
  11.   IplImage* img2r = cvCreateImage(sz,IPL_DEPTH_8U,1);
  12.   IplImage* img2g = cvCreateImage(sz,IPL_DEPTH_8U,1);
  13.   IplImage* img2b = cvCreateImage(sz,IPL_DEPTH_8U,1);
  14.   cvSplit(img1,img2r,img2g,img2b,NULL);

  15.   cvEqualizeHist(img2r,img2r);
  16.   cvEqualizeHist(img2g,img2g);
  17.   cvEqualizeHist(img2b,img2b);

  18.   IplImage* img3 = cvCloneImage(img1);
  19.   cvMerge(img2r,img2g,img2b,NULL,img3);

  20.   cvNamedWindow("Win1",CV_WINDOW_AUTOSIZE);
  21.   cvNamedWindow("Win2r",CV_WINDOW_AUTOSIZE);
  22.   cvNamedWindow("Win2g",CV_WINDOW_AUTOSIZE);
  23.   cvNamedWindow("Win2b",CV_WINDOW_AUTOSIZE);
  24.   cvNamedWindow("Win3",CV_WINDOW_AUTOSIZE);

  25.   cvShowImage("Win1",img1);
  26.   cvShowImage("Win2r",img2r);
  27.   cvShowImage("Win2g",img2g);
  28.   cvShowImage("Win2b",img2b);
  29.   cvShowImage("Win3",img3);

  30.   cvSaveImage("img3.jpg",img3);

  31.   cvWaitKey(0);

  32.   return 5;

  33.   Q_UNUSED(argc)
  34.   Q_UNUSED(argv)
  35. }

 


对一幅整体较暗淡的彩色图像分别抽取RGB三个通道进行直方图均衡化,然后再合并。发现结果图像的色彩在各个基色通道都均衡化后的合并结果,效果在视觉上有所优化,但还存在一些蓝斑,应该是数据信息细节不足导致。
 
 
 
 
上一篇:我的纸版图书目录
下一篇:flex 正则表达式快速参考