OpenCV 利用滚动条调整图像亮度
OpenCV 利用滚动条调整图像亮度
OpenCV 利用滚动条调整图像亮度:
- /************************************************************************/
- /* 亮度调整 */
- /************************************************************************/
- IplImage*transimg,*srcimg;
- int bright2adj;
- void re_adjust_bright(int)
- {
- assert(srcimg != NULL);
- assert(transimg != NULL);
- int x,y,i;
- if(srcimg->nChannels==3)
- {
- for (i = 0; i < 3; i++)//彩色图像需要处理3个通道,灰度图像这里可以删掉
- for (y = 0; y < srcimg->height; y++)
- for (x = 0; x < srcimg->width; x++)
- {
- float val = ((uchar*)(srcimg->imageData + srcimg->widthStep*y))[x*3+i];
- val+=bright2adj;
- if(val<0) val=0;
- else if(val>255) val=255;
- ((uchar*)(transimg->imageData + transimg->widthStep*y))[x*3+i] = (uchar)val;
- }
- }
- else
- {
- for (y = 0; y < srcimg->height; y++)
- for (x = 0; x < srcimg->width; x++)
- {
- float val = ((uchar*)(srcimg->imageData + srcimg->widthStep*y))[x];
- val+=bright2adj;
- if(val<0) val=0;
- else if(val>255) val=255;
- ((uchar*)(transimg->imageData + transimg->widthStep*y))[x] = (uchar)val;
- }
- }
- cvShowImage("image",transimg);
- }
- void on_mouse3(int event,int x,int y,int flags,void* param)
- {
- if(event==CV_EVENT_LBUTTONUP)
- re_adjust_bright(0);
- }
- void CCVMFCView::OnAdjustBrightness()
- {
- srcimg=cvCloneImage(workImg);
- cvFlip(srcimg);
- transimg=cvCloneImage(srcimg);
- cvNamedWindow("image",CV_WINDOW_AUTOSIZE);
- cvCreateTrackbar("亮度", "image", &bright2adj, 255,re_adjust_bright);
- //re_adjust_bright(0);
- cvShowImage("image",srcimg);
- cvSetMouseCallback("image",on_mouse3,0);
- cvWaitKey(0);
- cvDestroyWindow("image");
- cvReleaseImage(&srcimg);
- cvFlip(transimg);
- m_dibFlag=imageReplace(transimg,&workImg);
- m_ImageType=2;
- Invalidate();
- }
评论暂时关闭