OpenCV图像亮度和对比度.doc
文本预览下载声明
《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的学习,
显示全部