OpenCV 利用滚动条调整图像亮度

宜家博客
宜家博客
宜家博客
40414
文章
0
评论
2019年8月13日10:40:44 评论 314 2113字阅读7分2秒
  1. /************************************************************************/  
  2. /* 亮度调整                                              */  
  3. /************************************************************************/  
  4.   
  5. IplImage*transimg,*srcimg;  
  6. int bright2adj;  
  7.   
  8. void re_adjust_bright(int)  
  9. {  
  10.     assert(srcimg != NULL);  
  11.     assert(transimg != NULL);  
  12.     int x,y,i;  
  13.     if(srcimg->nChannels==3)  
  14.     {  
  15.         for (i = 0; i < 3; i++)//彩色图像需要处理3个通道,灰度图像这里可以删掉   
  16.             for (y = 0; y < srcimg->height; y++)  
  17.                 for (x = 0; x < srcimg->width; x++)  
  18.                 {  
  19.                     float val = ((uchar*)(srcimg->imageData + srcimg->widthStep*y))[x*3+i];  
  20.                     val+=bright2adj;  
  21.                     if(val<0)    val=0;  
  22.                     else if(val>255) val=255;  
  23.                     ((uchar*)(transimg->imageData + transimg->widthStep*y))[x*3+i] = (uchar)val;  
  24.                 }  
  25.     }  
  26.     else  
  27.     {  
  28.         for (y = 0; y < srcimg->height; y++)  
  29.             for (x = 0; x < srcimg->width; x++)  
  30.             {  
  31.                 float val = ((uchar*)(srcimg->imageData + srcimg->widthStep*y))[x];  
  32.                 val+=bright2adj;  
  33.                 if(val<0)    val=0;  
  34.                 else if(val>255) val=255;  
  35.                 ((uchar*)(transimg->imageData + transimg->widthStep*y))[x] = (uchar)val;  
  36.             }  
  37.     }         
  38.     cvShowImage("image",transimg);  
  39. }  
  40.   
  41. void on_mouse3(int event,int x,int y,int flags,void* param)  
  42. {  
  43.     if(event==CV_EVENT_LBUTTONUP)  
  44.         re_adjust_bright(0);  
  45. }  
  46.   
  47. void CCVMFCView::OnAdjustBrightness()  
  48. {  
  49.     srcimg=cvCloneImage(workImg);  
  50.     cvFlip(srcimg);  
  51.     transimg=cvCloneImage(srcimg);    
  52.   
  53.     cvNamedWindow("image",CV_WINDOW_AUTOSIZE);    
  54.     cvCreateTrackbar("亮度""image", &bright2adj, 255,re_adjust_bright);  
  55.     //re_adjust_bright(0);   
  56.     cvShowImage("image",srcimg);  
  57.   
  58.     cvSetMouseCallback("image",on_mouse3,0);  
  59.   
  60.     cvWaitKey(0);  
  61.     cvDestroyWindow("image");  
  62.     cvReleaseImage(&srcimg);  
  63.     cvFlip(transimg);  
  64.     m_dibFlag=imageReplace(transimg,&workImg);  
  65.   
  66.     m_ImageType=2;  
  67.     Invalidate();  
  68. }  
继续阅读
weinxin
欢迎加入中国站长博客之家
本站的所有资源都会上传分享到博客之家,希望大家互相学习交流进步。
宜家博客
Linux下vim编辑器使用技巧 Linux编程

Linux下vim编辑器使用技巧

整理了一些Linux下使用vim编辑器的技巧,供大家参考! vi编辑器是unix/Linux的通用编辑器,读作vee-eye (visual editor的简写)。(这里的vim,是改进的vi, Vi...
Linux Kernel系列二:用户空间的初始化 Linux编程

Linux Kernel系列二:用户空间的初始化

上篇我们知道,kernel初始化后将启动init进程,那么这个进程将干些什么呢?除此之外,kernel还需要做些什么事情呢?(想想文件系统、根存储设备是在什么时候初始化的呢?) 先从文件系统初始化说起...
在CentOS上安装rpmbuild Linux编程

在CentOS上安装rpmbuild

rpm-build 包和  /usr/src/RedHat ,这些 rpm build 的程序是要靠 spec 文件的控制。它是配置指定安装到另外的机器上的,用来指示转换的源码补丁编译成二进...
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: