全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
OpenCV图像处理 -上机实验报告 1 1.实验题目:改变图像的对比度和亮度2.实验目的:(1)访问像素值;(2)用0初始化矩阵;(3)saturate cast是做什么用的,以及它为什么有用。3.实验原理:(1)图像处理:一般来说,图像处理算子是带有一幅或多幅输入图像、产生一幅输出图像的函数。图像变换可分为以下两种:点算子(像素变换)、领域(基于区域的)算子;(2)像素变换:在这一类图像处理变换中,仅仅根据输入像素值(有时可加上某些全局信息或参数)计算相应的输出像素值。这类算子包括亮度和对比度调整,以及颜色校正和变换;(3)亮度和对比度调整:两种常用的点过程(即点算子),是用常数对点进行乘法和加法运算g(x)=f(x)+;(4)两个参数0和一般称作增益和偏置参数。我们往往用这两个参数来控制对比度和亮度;(5)你可以把看成源图像像素,把g(x)看成输出图像像素。这样一来,上面的式子就能写的更清楚些g(i,j)=*f(i,j)+,其中i,j表示像素位于第i行和第j列。4.实验步骤:(1)建立两个变量,以便存储用户输入的和:(2)用imread载入图像,并将其存入一个Mat对象:(3)此时,因为要对图像进行变换,所以我们需要一个新的Mat对象,以存储变换后的图像,我们希望这个Mat对象具有如下性质:1)像素值初始化为0;2)与原图像有相同的大小和类型。注意到:Mat:Zeros采用Matlab风格的初始化方式,用image.size()和image.type()来对Mat对象进行0初始化。(4)现在为了执行运算g(i,j)=*f(i,j)+,我们要访问图像的每一个像素,因为是对RGB图像进行运算,每个像素有三个值(R,G,B),所以要分别访问他们,下面是访问像素的代码片段:注意:为了访问图像的每一个像素,我们使用如下语法image.at(y,x)c,其中,y是像素所在的行,x是像素所在的列,c是R、G、B(0、1、2)之一,因为*p(i,j)+的运算结果可能超出像素取值范围,还可能是非整数(如果是浮点数的话),所以我们要用saturatecast对结果进行转换,以确保他为有效值。(5)最后,用传统方法创建窗口并显示图像:5.实验结果:6.源程序:#include#include #include #include #include #include using namespace std; using namespace cv; Mat src,erosion_dst,dilation_dst;int erosion_elem=0;int erosion_size=0;int dilation_elem=0;int dilation_size=0;int const max_elem=2;int const max_kernel_size=21;void Erosion(int ,void*);void Dilation(int ,void*);int main(int argc,char* argv)src=imread(guo.jpg);if(!src.data)return -1;namedWindow(Erosion Demo, CV_WINDOW_AUTOSIZE ); namedWindow(Dilation Demo, CV_WINDOW_AUTOSIZE ); cvMoveWindow(Dilation Demo,src.cols,0);createTrackbar(Element:n0:Rectn1:Crossn2:Ellipse,Erosion Demo,&erosion_elem,max_elem,Erosion);createTrackbar(Kernel size:n 2n +1,Erosion Demo,&erosion_size,max_kernel_size,Erosion); createTrackbar(Element:n0:Rectn1:Crossn2:Ellipse,Dilation Demo,&dilation_elem,max_elem,Dilation);createTrackbar(Kernel size:n 2n +1,Dilation Demo,&dilation_size,max_kernel_size,Dilation);Erosion(0,0);Dilation(0,0);waitKey(0);return 0;void Erosion(int,void*)int erosion_type;if(erosion_elem=0)erosion_type=MORPH_RECT; else if(erosion_elem=1)erosion_type=MORPH_CROSS;else if(erosion_elem=2)erosion_type=MORPH_ELLIPSE;Mat element=getStructuringElement(erosion_type,Size(2*erosion_size+1,2*erosion_size+1),Point(erosion_size,erosion_size);erode(src,erosion_dst,element);imshow(Eerosion Demo,erosion_dst);void Dilation(int,void*)int dilation_type;if(dilation_elem=0)dilation_type=MORPH_RECT; else if(dilation_elem=1)dilation_type=MORPH_CROSS;else if(dilation_elem=2)dilation_type=MORPH_ELLIPSE;Mat element=getStructuringElement(dilation_type,Size(2*dilatio
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 应急响应中的智能监测技术发展路径
- 2025年城市智能化园区建设项目可行性研究报告及总结分析
- 2025年活动娱乐场所开发项目可行性研究报告及总结分析
- 仓库库位变更申请书
- 白酒品评培训班申请书
- 热动专业本科毕业论文
- 大学免考申请书范文
- 2025年区块链技术服务合同协议
- 2025年计算机编程能力测试
- 2025年大学医学影像学专项
- 单招协议培训
- 天津高考英语词汇3500
- (土壤学教学课件)第一章-土壤矿物质
- 外籍人员基本情况登记表
- 2023学年完整公开课版插座安装
- 水尺计重的资料
- 中小学(中职学校)学生餐饮保障突出问题台账
- GB/T 3672.1-2002橡胶制品的公差第1部分:尺寸公差
- GB/T 26746-2011矿物棉喷涂绝热层
- 黑龙江八一农垦大学-渠文军-答辩通用PPT模板
- 盾构法施工工艺及施工过程分步介绍
评论
0/150
提交评论