生活随笔
收集整理的這篇文章主要介紹了
图像亮度、对比度调节(伽马校正)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
【OpenCV學習】圖像亮度、對比度調節(伽馬校正)
作者:gnuhpc?
出處:http://www.cnblogs.com/gnuhpc/
#include "cv.h"
#include "highgui.h"
#include <stdio.h>
int ImageAdjust(IplImage *src,IplImage *dst,double low,double high, //x directiondouble bottom,double top, //y directiondouble gamma);
int main(void)
{char *filename="lena.jpg";IplImage *dst,*src = /blog.armyourlife.info/cvLoadImage(filename,0);if(!src){printf("Couldn't seem to Open %s, sorry/n",filename);return -1;}cvNamedWindow( "src", 1 );cvNamedWindow( "result", 1 );// Image adjustdst = cvCloneImage(src);// 輸入參數 [0,0.5] 和 [0.5,1], gamma=1if( ImageAdjust( src, dst, 0, 0.5, 0.5, 1, 1)!=0)return -1;cvShowImage( "src", src );cvShowImage( "result", dst );cvWaitKey(0);cvDestroyWindow("src");cvDestroyWindow("result");cvReleaseImage( &src );cvReleaseImage( &dst );return 0;
}
int ImageAdjust(IplImage* src, IplImage* dst,double low, double high, // X方向:low and high are the intensities of srcdouble bottom, double top, // Y方向:mapped to bottom and top of dstdouble gamma )
{double low2 = low*255;double high2 = high*255;double bottom2 = bottom*255;double top2 = top*255;double err_in = high2 - low2;double err_out = top2 - bottom2;int x,y;double val;if(low<0 && low>1 && high <0 && high>1&&bottom<0 && bottom>1 && top<0 && top>1 && low>high)return -1;// intensity transformfor( y = 0; y < src->height; y++){for (x = 0; x < src->width; x++){val = ((uchar*)(src->imageData + src->widthStep*y))[x];val=pow((val - low2)/err_in, gamma)*err_out+bottom2;if(val>255)val=255;if(val<0)val=0; // Make sure src is in the range [low,high]((uchar*)(dst->imageData + dst->widthStep*y))[x] = (uchar) val;}}return 0;
}
?
作者:gnuhpc?
出處:http://www.cnblogs.com/gnuhpc/
總結
以上是生活随笔為你收集整理的图像亮度、对比度调节(伽马校正)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。