歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> OpenCV 利用滾動條調整圖像亮度

OpenCV 利用滾動條調整圖像亮度

日期:2017/3/1 10:26:37   编辑:Linux編程

OpenCV 利用滾動條調整圖像亮度:

  1. /************************************************************************/
  2. /* 亮度調整 */
  3. /************************************************************************/
  4. IplImage*transimg,*srcimg;
  5. int bright2adj;
  6. void re_adjust_bright(int)
  7. {
  8. assert(srcimg != NULL);
  9. assert(transimg != NULL);
  10. int x,y,i;
  11. if(srcimg->nChannels==3)
  12. {
  13. for (i = 0; i < 3; i++)//彩色圖像需要處理3個通道,灰度圖像這裡可以刪掉
  14. for (y = 0; y < srcimg->height; y++)
  15. for (x = 0; x < srcimg->width; x++)
  16. {
  17. float val = ((uchar*)(srcimg->imageData + srcimg->widthStep*y))[x*3+i];
  18. val+=bright2adj;
  19. if(val<0) val=0;
  20. else if(val>255) val=255;
  21. ((uchar*)(transimg->imageData + transimg->widthStep*y))[x*3+i] = (uchar)val;
  22. }
  23. }
  24. else
  25. {
  26. for (y = 0; y < srcimg->height; y++)
  27. for (x = 0; x < srcimg->width; x++)
  28. {
  29. float val = ((uchar*)(srcimg->imageData + srcimg->widthStep*y))[x];
  30. val+=bright2adj;
  31. if(val<0) val=0;
  32. else if(val>255) val=255;
  33. ((uchar*)(transimg->imageData + transimg->widthStep*y))[x] = (uchar)val;
  34. }
  35. }
  36. cvShowImage("image",transimg);
  37. }
  38. void on_mouse3(int event,int x,int y,int flags,void* param)
  39. {
  40. if(event==CV_EVENT_LBUTTONUP)
  41. re_adjust_bright(0);
  42. }
  43. void CCVMFCView::OnAdjustBrightness()
  44. {
  45. srcimg=cvCloneImage(workImg);
  46. cvFlip(srcimg);
  47. transimg=cvCloneImage(srcimg);
  48. cvNamedWindow("image",CV_WINDOW_AUTOSIZE);
  49. cvCreateTrackbar("亮度", "image", &bright2adj, 255,re_adjust_bright);
  50. //re_adjust_bright(0);
  51. cvShowImage("image",srcimg);
  52. cvSetMouseCallback("image",on_mouse3,0);
  53. cvWaitKey(0);
  54. cvDestroyWindow("image");
  55. cvReleaseImage(&srcimg);
  56. cvFlip(transimg);
  57. m_dibFlag=imageReplace(transimg,&workImg);
  58. m_ImageType=2;
  59. Invalidate();
  60. }
Copyright © Linux教程網 All Rights Reserved