OpenCV简单亮度校正功能达成
发布时间:2021-12-11 12:12:40 所属栏目:教程 来源:互联网
导读:今天找到了一个OpenCV简单亮度校正功能的方法感觉效果还可以,使用于简单背景,代码如下 int _tmain(int argc, _TCHAR* argv[]) { IplImage* src; // 第一条命令行参数确定了图像的文件名。 char* filename = (char*)C:UserschenchaoDesktop结晶25.b
今天找到了一个OpenCV简单亮度校正功能的方法感觉效果还可以,使用于简单背景,代码如下 int _tmain(int argc, _TCHAR* argv[]) { IplImage* src; // 第一条命令行参数确定了图像的文件名。 char* filename = (char*)"C:UserschenchaoDesktop结晶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:UserschenchaoDesktop1.bmp",dst); cvReleaseImage(&src); cvReleaseImage(&mean); cvReleaseImage(&dst); cvDestroyWindow("src"); cvDestroyWindow("mean"); cvDestroyWindow("dst"); return 0; } ![]() (编辑:PHP编程网 - 黄冈站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |