首页 / 操作系统 / Linux / OpenCV简单亮度校正功能实现
今天找到了一个OpenCV简单亮度校正功能的方法感觉效果还可以,使用于简单背景,代码如下int _tmain(int argc, _TCHAR* argv[])
{
IplImage* src;
// 第一条命令行参数确定了图像的文件名。
char* filename = (char*)"C:\Users\chenchao\Desktop\结晶\25.bmp";
if( (src = cvLoadImage( filename, 0)) == 0 )
return -1;
cvNamedWindow( "src", 1 );
cvShowImage( "src", src ); IplImage* mean=cvCreateImage(cvGetSize(src), 8, 1 );
IplImage* dst=cvCreateImage(cvGetSize(src), 8, 1 );
cvSmooth( src, mean, CV_MEDIAN , 101, 101, 0, 0 );
cvNamedWindow( "mean", 1 );
cvShowImage( "mean", mean ); int i,j;
int k;
double val,val_mean,val_dst;
float factor=0.7;
int step_src=src->widthStep/sizeof(uchar);
int step_mean=mean->widthStep/sizeof(uchar);
for(j=0;j<src->height;j++)
{
for(i=0;i<src->width;i++)
{
k=j*step_src+i;
val=((uchar*)(src->imageData))[k]; //获取源图像像素点数据
val_mean=((uchar*)(mean->imageData))[k];//获取平滑处理后的图像像素点
val_dst=(int)( (127-val_mean)*factor + val ); //计算目标像素值
//防止数据越界
if(val_dst<0)
val_dst=0;
//转换成整数复制
((uchar*)(dst->imageData))[k]=(int)val_dst;
}
} cvNamedWindow( "dst", 1 );
cvShowImage( "dst", dst ); cvWaitKey(0);
cvSaveImage("C:\Users\chenchao\Desktop\1.bmp",dst);
cvReleaseImage(&src);
cvReleaseImage(&mean);
cvReleaseImage(&dst);
cvDestroyWindow("src");
cvDestroyWindow("mean");
cvDestroyWindow("dst"); return 0;
}OpenCV 利用滚动条调整图像亮度 http://www.linuxidc.com/Linux/2012-03/56796.htm--------------------------------------分割线 --------------------------------------Ubuntu Linux下安装OpenCV2.4.1所需包 http://www.linuxidc.com/Linux/2012-08/68184.htmUbuntu 12.04 安装 OpenCV2.4.2 http://www.linuxidc.com/Linux/2012-09/70158.htmCentOS下OpenCV无法读取视频文件 http://www.linuxidc.com/Linux/2011-07/39295.htmUbuntu 12.04下安装OpenCV 2.4.5总结 http://www.linuxidc.com/Linux/2013-06/86704.htmUbuntu 10.04中安装OpenCv2.1九步曲 http://www.linuxidc.com/Linux/2010-09/28678.htm基于QT和OpenCV的人脸识别系统 http://www.linuxidc.com/Linux/2011-11/47806.htm--------------------------------------分割线 --------------------------------------OpenCV的详细介绍:请点这里
OpenCV的下载地址:请点这里本文永久更新链接地址:http://www.linuxidc.com/Linux/2014-10/108678.htm