文档详情

OpenCV图像亮度和对比度.doc

发布:2017-05-21约1.53千字共4页下载文档
文本预览下载声明
《OpenCV图像处理》 ---上机实验报告 1 改变图像的对比度和亮度一、 实验名称:改变图像的对比度和亮度 二、 实验目的: 1学习opencv的一些基本操作2、通过学习改变图像对比度和亮度可以访问像素值,用0初始化矩阵,及saturate_cast函数是做什么用的1、图像处理:一般来说,图像处理算子是带有一幅或多幅输入图像、产生一幅输出图像的函数。图像变换可分为以下两种:点算子(像素变换)、领域(基于区域的)算子 2、像素变换:在这一类图像处理变换中,仅仅根据输入像素值(有时可加上某些全局信息或参数)计算相应的输出像素值。这类算子包括亮度和对比度调整 ,以及颜色校正和变换。、 实验原理: 亮度和对比度调整:两种常用的点过程(即点算子),是用常数对点进行乘法和加法运算:两个参数一般称作增益和偏置参数。我们往往用这两个参数来分别控制对比度和亮度。你可以把看成源图像像素,把看成输出图像像素。这样一来,上面的式子就能写得更清楚些:其中,i和 j表示像素位于第i行和第j列。 、 实验运行环境: Windows7操作系统,Visual C++ 2008 Express Edition 六、 实验源代码:#includestdafx.h #include opencv2/core/core.hpp #include opencv2/highgui/highgui.hpp #includeiostream using namespace std; using namespace cv; double alpha; int beta; int main(int argc,char**argv) { Mat image=imread(li.jpg); Mat new_image=Mat::zeros(image.size(),image.type()); coutBasic Linear Transformsendl; cout-----------------------endl; cout*Enter the alpha value [1.0-3.0]:; cinalpha; cout*Enter the beta value [0-100]:; cinbeta; for(int y=0;yimage.rows;y++) { for(int x=0;ximage.cols;x++) { for(int c=0;c3;c++) { new_image.atVec3b(y,x)[c]=saturate_castuchar(alpha*(image.atVec3b(y,x)[c]) + beta); } } } namedWindow(Original Image,1); namedWindow(New Image,1); imshow(Original Image,image); imshow(New Image,new_image); waitKey(); return 0; } 七、 实验结果: 八、 实验总结: 通过本次实验,我熟悉opencv和Visual C++ 2008 Express Edition的环境配置通过对opencv的学习,
显示全部
相似文档