全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 房屋销售中介协议书
- 房租减免抵扣协议书
- 房贷楼房买卖协议书
- 房顶保固协议书范本
- 手机信号覆盖协议书
- 手机购买合同协议书
- 打包债务延期协议书
- 打孔庄安全合同协议
- 托管安全协议书模板
- 2021智慧树《西方文论经典导读》网课章节测试完整答案
- T-GDWHA 0021-2025 广东省一般小(2)型水库大坝安全鉴定规程
- 江门二中小升初真题试卷数学
- 泰安市宁阳县磁窑镇实验小学-遇见成长 与数同行-二年级上期秋季开学第一课家长会【课件】
- 五上语文《快乐读书吧-民间故事》知识点
- 蜂蜜教学课件
- 3.1贯彻新发展理念+课件-2024-2025学年高中政治统编版必修二经济与社会
- oem驻厂人员管理制度
- 中式快餐的消费者需求分析
- 2025年office办公软件上机操作试题
- 票据转让私下协议书
- 《流感用药指导》课件
评论
0/150
提交评论