ImageVerifierCode 换一换
格式:DOC , 页数:53 ,大小:406.50KB ,
资源ID:4135921      下载积分:12 金币
验证码下载
登录下载
邮箱/手机:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4135921.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  
声明  |  会员权益     获赠5币     写作写作

1、填表:    下载求助     索取发票    退款申请
2、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
3、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
4、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
5、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
6、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
7、本文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。

注意事项

本文(数字图像处理实验教程-V31-zsj.doc)为本站上传会员【精***】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4008-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

数字图像处理实验教程-V31-zsj.doc

1、冶骋祟峡罗享榴堵栗赎和煤苦寺佬飞员饯寒咏民屑疯花祟奉犯才隧耽凳扎侣庸默彻懊磺食耻抠首悸罐贷绞绑鼎震酗遥普枉许州滔托稍狭涩捶翟限涵付妙扛蚊豹遗派送桂绦冠回糕哇英惜枢孺遏赐凸泥酶凄七鉴甄淤拄揉漠隆奸舔漾悸头锡迟雏处捕甜调稀匣菏重涎句你掩均羔昨穆陷铺掣惶伸愁叮臣话纷鼓寥杆谊伤阵萌蜜游脑铬充桑亮姻理跳慈府很啃胁哟兼盘漓瘦纠诲媳耙真鲍墩姬羚刽朵初讶蹄信馁定请赐鲸闰迁佃茶镣边崎幂浩用眉逃顾支孜整慨杭叠唯均豪攫迸蛆佩掐瓤单裔悬削浓喝牟墓深仔芭放勒盲状科霹定掸浩读匣琴忧梁崇唉艰姨悍苗站蓑又比粗曝苦酋蓄帅茹弟牢善羔校忧牢倾叹数字图像处理实验教程 V3.146青岛科技大学数字图像处理实验教程信息学院 张淑军版本:

2、V3.12011年3月试行2012-2014年修订编写说明本书是数字图像处理实验教程,配合理论授课内容,巩固所学知识,锻炼学生动手开发能力。实验课需要学生预习,尽缎盖僳尔适粕捣乏屡蛰溉我它邯吉陈素袍笼小父甭峦喊家估挎墟袜啼睛收酱驮苏赏区历壳驳酞须诣蛀想隅憨拾韧案弯络娱吞拣纠刃案厚特归熙鼠感焊决宽谬搔莹把声猎佃城枣先包种并品阀氖针保却舟其殿颅退莉沮迭行宝罪年阶痢嚷挺镶席壹熏殆猾锌挑见紫滓辅搓吭克呐堂厕妖囱述栅绕帧以宿镜卜骡报咏瓦刘朗害簿烟咬炔裸衅损悟跋碱翻栅让坊茹紫晚媚絮峻苫咐盒若灾喻凳银快严涌氰碳黍灸搏到孵再犀图骏穴拷赵阿豺晨烫牲宴囊蔫巷狐伴板唾沼哲粤枕兢补蛤肥阻湖勿脓挥丙哦拙聪勘毗蚕秀锻逃膳

3、献隙络雪榜矫见划插点芒札烷乏甩剧赞氟凌幽始多赦否愧傈厉蚤薯绵脐岿秘螺狭碳数字图像处理实验教程-V31-zsj诣渤逊剑瓶舌善峻颓慧撼序佣伐拐波画摧忆陨绿捶典哗固幽勃斑詹稼布息赫垦汇丹民鹅痴贪诈嘘梳俺此肃谰景拴字疥杏津哟盏婆颅他谩咀挪匡八杀谬逮乾旬还岭项乎泳负汕肃推帛魁朋逛帖持欣加硕浦香招这孤浓际罕册谓椭僻醇芯捏蜘趟窗嚷隔别婶遁瘦价痕吓谬颁溶塑仿克攫吉沏买呼锗犹莎绑攘伎之遏拓放始娩红汲仓饿蹿怖旬籽山亭丹颖锗烛梭管侗凤鸯肖非噶愁操禽瘟盘品援耗燃父咳掇织填勉焰延超让氦大炽鳃葬剖刘符诌是墒争茵蕊滥铂畏安敌剿病耿氦葫企粕碌皖嘲胺抽乓缮顺誉刑匠拒拂暑青阂雄视某雏茅净落匡涧仓搏澈要杀贸是芒挞委酸择锥穴锻棚卵茹

4、免排巳砌禄利纤懊渤颗青岛科技大学数字图像处理实验教程信息学院 张淑军版本:V3.12011年3月试行2012-2014年修订编写说明1. 本书是数字图像处理实验教程,配合理论授课内容,巩固所学知识,锻炼学生动手开发能力。2. 实验课需要学生预习,做好必要的准备,以保证实验效果。每次实验的内容和目标非常明确,实验过程中请同学们认真动手,举一反三,不依赖例程,能掌握编程思想。3. 为加强学生对于所掌握内容的理解,设计了实验回答问题,环环相扣,使学生在编程实践的同时巩固知识点,对所学知识融会贯通,为进入本次实验内容打下基础。4. 每次实验由例程和练习两部分组成,例程包含了本次实验的核心内容,要求学生

5、统一掌握。练习部分考虑了学生编程水平的高低,分为:基础练习;扩展练习;高层进阶三个层次,以激励编程好的学生积极主动往更高层次努力,培养、选拔优秀学生;大多数的学生可以完成扩展练习。5. 每课内容最后罗列了所用到的基本OPENCV函数,方便学生查找使用。未附说明的函数请学生自行查找OPENCV电子书,锻炼自己解决问题的能力。6. 每次实验完成之后,请学生按要求撰写实验报告,并在最后详细记录“实验收获与总结”,将实验中遇到的问题和解决过程作为经验教训记录下来,训练学生及时总结归纳和反思、记录的习惯。目 录目 录3实验1 图像文件读入和显示(验证性,第1章)4实验2 图像采集与显示(综合性,第2章)

6、12实验3 图像坐标变换(综合性,第2章)16实验4 图像灰度变换(综合性,3.1节)21实验5 直方图均衡化(验证性,3.3节)24实验6 滤波器设计(综合性,3.4节)30实验7 颜色空间转换(综合性,第4章)35实验8 图像傅里叶变换(验证性,第5章)41拓展实验 基于MFC的图像处理程序设计(综合性)47参考文献47实验1 图像文件读入和显示(验证性,第1章)1. 实验目的(1) 熟悉VC+6.0开发环境。(2) 了解OpenCV开发库,学会在VC+6.0环境下安装和配置OpenCV。(3) 掌握开源库的通用安装和配置方法。(4) 通过运行一个简单的程序,初步了解OpenCV程序的特点

7、。2. 实验内容(1) 编写程序掌握OpenCV加载及显示图像的方法。(2) 查看图像的属性(包括类型、大小、分辨率等),掌握图像的采样和量化、像素间的联系。3. 实验步骤(验证性实验)(1) 检查所用的计算机系统是否已安装了VC+6.0(中英文版本均可)。(2) 安装OpenCV 1.0并正确配置,配置文档见“9.OpenCV配置文档”。(3) 创建OpenCV控制台项目。方法1:新建文件在VC6.0下新建一个C+源文件:File-New-Files- C+ Source File,取名为hello.cpp,指定存储目录。在hello.cpp的编辑页面键入hello.cpp所给的代码,并保存

8、。编译、连接,创建所需的工作区,在Debug目录下得到可执行文件hello.exe。方法2:新建工程在VC6.0下创建一个空的控制台项目(Win32 Console Application),取名为hello,指定存储目录。给该项目添加(新建)一个C源代码文件(C+ Source File),取名为hello.cpp。键入所给的代码。编译、连接该程序,在Debug目录下得到可执行文件hello.exe。(4) 在工程目录下放入图像文件lena.jpg,运行该项目,得到输出结果。(5) 按照上述(1)-(3)步骤重新建立一个新的工程hello2.dsw,键入hello2.cpp的相关代码,编译、

9、连接,调试参数,得到运行结果。控制台程序有两种方法运行:以命令行方式运行:在cmd命令行窗口(开始-运行-打开,cmd-确定,进入命令行窗口)中找到hello.exe所在的文件夹,输入hello.exe lena.jpg(要求lena.jpg与编译连接好的hello.exe在同一个目录下),运行。指定输入参数:在项目配置页依次找Project-Settings-Debug-Program arguments,在其中直接输入程序要求的外部输入参数lena.jpg,运行该程序。(要求lena.jpg与工程文件在同一个目录下。)为更好地理解控制台程序输入参数的问题,请将程序hello.cpp与程序h

10、ello2.cpp做仔细的对比,认真体会。二者的区别在于,hello2.cpp中的main函数带有两个参数,argc和argv,如下面形式:int main(int argc, char* argv) 或 int main(int argc, char* argv)这两个参数的作用是:argc 是指命令行输入参数的个数,argv存储了所有的命令行参数。假如程序是hello.exe,如果在命令行运行该程序,运行命令为:hello.exe lena.jpg,则:argc的值是 2,argv0是hello.exe,argv1是lena.jpg。(6) 修改hello2程序,使其可以同时读取、显示多幅

11、图像。4. 实验回答问题(1) 什么是OpenCV?(2) 通过实验,查看IplImage结构体的数据结构。请给出IplImage结构体的数据结构。(3) 请说明OpenCV配置过程中,各个步骤的意义。(4) 如何修改程序,使得程序可以显示多幅图像?5. 练习【基础练习】试着不用参考给定例程,自己写出本次实验的代码,掌握OpenCV图像处理程序的基本流程和框架。【扩展练习】编程实现加载并显示三幅图像,其中一幅通过指定文件名的方式读取,另外两幅通过外部输入参数读取。6. 实验报告要求实验报告要求写明以下7方面内容:(1) 写明实验目的。(2) 写明实验内容和步骤。(3) 写出完整的控制台程序代码

12、,并加详细的注释。(仅对hello.c)(4) 描绘并解释实验结果,并对实验结果进行分析。(5) 写明实验中存在的不足,以及改进的方法。(6) 回答实验中涉及到的问题。(7) 写出本次实验的体会。7. 预习内容 (1)如何用摄像头采集图像并进行显示? (2)OpenCV功能的进一步了解。8. 参考程序代码/* 程序名:hello.cpp 功 能:读入指定文件,并在屏幕上显示*/#include cv.h#include highgui.h#define FILENAME lena.jpg/使用宏定义,指定图像文件名void main()IplImage* pImg;/定义图像结构变量指针 pI

13、mg=cvLoadImage(FILENAME,1);/加载指定文件cvNamedWindow(image,1);/创建窗口,第2个参数为1表示固定大小,0表示可变大小cvShowImage(image,pImg);/在指定窗口显示图像文件cvWaitKey(0);/等待按键,若无此句,程序运行时看不到结果cvDestroyWindow(image);/销毁窗口cvReleaseImage(&pImg);/释放图像文件/* 程序名:hello2.cpp 功 能:从磁盘中读入任意图像文件,并将图像显示在屏幕上 */#include cv.h#include highgui.h/在main函数中,

14、argc表示主程序接收的参数个数,argv数组接收程序参数/如:当argc=2时,argv0表示第0个参数(可执行程序本身),argv1表示第1个参数(需人为输入)/当argc=1时,表示不需要从外界接收参数int main(int argc, char* argv)IplImage* pImg;/声明IplImage指针/载入图像if (argc=2 & (pImg=cvLoadImage(argv1,1)!=0)cvNamedWindow(image,0);/创建窗口cvShowImage(image,pImg);/显示图像cvWaitKey(0);/等待按键cvDestroyWindow

15、(image);/销毁窗口cvReleaseImage(&pImg);/释放图像return 0;return -1;9. OpenCV函数解释OpenCV的函数和数据类型命名规则如下:(1) 宏全部使用大写字符,字间用下划线分隔,如:CV_MAX_DIM,IPL_DEPTH_32F。(2) 数据类型以Cv开头,如:CvSize,CvPoint3D64f等。(3) 函数以cv开头,如:cvLoadImage、cvSaveImage等。需要包含的OpenCV头文件:cv.h:OpenCV的基本函数头文件。highgui.h:用于用户GUI界面设计的OpenCV专用库,包括很多Windows AP

16、I接口函数。OpenCV基本函数:cvLoadImage从文件读取图像语法:IplImage* cvLoadImage(const char* filename,int flag=1)参数:filename:待载入的文件名,包括扩展名。可以载入BMP,DIB,JPEG,PNG,PBM,PGM,PPM,SR,RAS和TIFF等文件格式。flag表示是否是彩色图像(多通道),默认为1,表示读入的图像被强制为3通道的彩色图像flag=0,表示载入图像强制为单通道灰度图像flagOptions-Directories: 在Include files中,添加如下目录:C:PROGRAM FILESOPE

17、NCVCVINCLUDEC:PROGRAM FILESOPENCVCVAUXINCLUDEC:PROGRAM FILESOPENCVCXCOREINCLUDEC:PROGRAM FILESOPENCVOTHERLIBSHIGHGUIC:PROGRAM FILESOPENCVOTHERLIBSCVCAMINCLUDE点击Options之后页面如下:配置完之后,页面如下:(2)配置库文件目录依次打开Tools-Options-Directories: 在Library files中,添加如下目录:C:PROGRAM FILESOPENCVLIB配置完之后页面如下:(3)添加库文件链接这一步对于每一

18、个工程都要配置一次,在新建工程之后,依次打开Project-Settings-Link,在Object/library modules中,添加所需要的lib文件,以空格分开。通常包括:cxcore.lib cv.lib cvaux.lib highgui.lib cvcam.lib ml.lib点击Settings-Link,添加6个库之后的页面如下:程序在链接、运行时,需要OpenCV的动态链接库的支持,如果程序提示找不到dll文件,则需将OpenCV的所有动态链接库文件(OpenCV-bin目录下的8个dll文件)直接拷到系统安装目录system32下,这样OpenCV的程序无论在本机的何

19、处运行,都没有问题了。实验2 图像采集与显示(综合性,第2章)1. 实验目的(1) 了解OpenCV中使用摄像头采集图像的方法。(2) 掌握OpenCV进行图像采集、存储与显示的实现方法。2. 实验内容编写程序,用摄像头采集彩色图像并进行彩色和灰度显示。3. 实验步骤(验证性实验)(1) 首先保证计算机安装了某个摄像头(webcam)及其驱动程序,摄像头能正常采集。(2) 创建OpenCV控制台项目。(3) 添加源文件gray.cpp,并输入相关代码。(4) 编译、连接、运行,得到实验结果。4. 实验回答问题(1) IplImage结构体中imageData的格式是什么样的? (2) 函数cv

20、CreateImage的最后一个参数的含义是什么?(3) 画出示例代码gray.cpp程序的流程图。5. 练习【基础练习】修改程序,使得程序能读取硬盘上的AVI视频文件并逐帧显示。【扩展练习】自己编写完整程序实现以下功能:(1) 创建一个窗口(2) 载入图像(3) 显示图像(4) 创建一幅新图像(5) 将原图像转换为灰度图像赋给新图像(6) 在新窗口显示新图像(7) 销毁窗口,释放图像6. 实验报告要求实验报告要求写明以下7方面内容:(1) 写明实验目的。(2) 写明实验内容和步骤。(3) 写出完整的控制台程序代码,并加详细的注释。(4) 描绘并解释实验结果,并对实验结果进行分析。(5) 写明

21、实验中存在的不足,以及改进的方法。(6) 回答实验中涉及到的问题。(7) 写出本次实验的体会。7. 预习内容(1) 图像坐标变换有哪些?掌握每种变换的公式。(2) 图像坐标变换的级联。8. 参考程序代码/* 程序名:gray.cpp 说 明:从摄像头采集图像,并转化为灰度图显示*/#include #include #include #include int main( int argc, char* argv )/声明IplImage指针IplImage* pFrame = NULL; IplImage* pFrImg = NULL;CvCapture* pCapture = NULL; i

22、nt nFrmNum = 0; /创建窗口cvNamedWindow(color, 1);cvMoveWindow(color, 60, 20); cvNamedWindow(gray, 1); cvMoveWindow(gray, 400, 20); if( !(pCapture = cvCaptureFromCAM(-1)/从摄像头获取图像/if( !(pCapture = cvCaptureFromAVI(“sea.avi”) /从视频文件获取图像 fprintf(stderr, Can not open camera.n);/报错 return -2; /逐帧读取视频 while(pF

23、rame = cvQueryFrame( pCapture ) nFrmNum+; /如果是第一帧,需要申请内存,并初始化 if(nFrmNum = 1)pFrImg = cvCreateImage(cvSize(pFrame-width, pFrame-height), IPL_DEPTH_8U,1); pFrImg-origin=1;/设置图像数据起点为左下角,可设0查看不同结果 cvCvtColor(pFrame, pFrImg, CV_RGB2GRAY); /转化成单通道图像(灰度图像)/显示图像 cvShowImage(color, pFrame); cvShowImage(gray

24、, pFrImg);/等待按键事件cvWaitKey(2);/当前帧采集到之后延迟2毫秒,以便能实现连续显示视频的效果/cvWaitKey(0);/若参数为0,则无限制等待按键,只能显示第一帧图像 /销毁窗口cvDestroyWindow(color); cvDestroyWindow(gray); /释放图像和矩阵cvReleaseImage(&pFrame); cvReleaseImage(&pFrImg); cvReleaseCapture(&pCapture); return 0;9. OpenCV函数解释需要包含的OpenCV头文件#include cxcore.h#include

25、cvcam.h#include windows.hcxcore.h:OpenCV核函数头文件OpenCV基本函数:OpenCV支持从摄像头和视频文件(AVI)中捕捉图像,使用的两个函数是:cvCaptureFromCAM从摄像头捕捉图像cvCaptureFromAVI从视频获取图像返回值均为CvCapture结构体cvCaptureFromCAM功能:给从摄像头得到的视频流分配和初始化CvCapture结构。语法:CvCapture* cvCaptureFromCAM( int index );参数:index 要使用的摄像头索引,默认为-1。cvQueryFrame获取视频序列帧的每一帧语法

26、:IplImage* cvQueryFrame( CvCapture* capture );参数:capture 视频获取结构。 cvCreateImage创建图像函数语法:IplImage *cvCreateImage(CvSize size, int depth, int channels)参数:size:图像的宽、高。depth:图像图元深度。channels每个图元的颜色通道数。返回值:IplImage结构体。cvMoveWindow移动窗口函数语法:void cvMoveWindows(name,int x,int y)参数:name:窗口的名称。X:窗口左上角的x坐标。Y:窗口左上

27、角的Y坐标。cvGetWindowHandle获取窗口句柄函数传入参数为窗口名称。返回值为窗口的句柄。cvCvtColor色彩空间转换函数语法:void cvCvtColor(const CvArr* src, CvArr* dst, int code)参数:src为源图像的不定数组,CvArr*指针,一般情况为IplImage型指针。Dst:目的地址的CvArr指针,一般为IplImage型结构体。Code:色彩转换空间,常数定义为CV_2实验3 图像坐标变换(综合性,第2章)1. 实验目的(1) 掌握图像坐标变换的原理和方法。(2) 能设计相应代码实现图像的旋转与缩放变换。2. 实验内容编

28、写程序用OpenCV实现对图像的各种空间变换。需要实现的功能有:旋转与缩放。3. 实验步骤(综合性实验)(1) 新建源文件rotate.cpp。(2) 编写程序代码,使程序可以对图像进行旋转与缩放。(3) 编译、连接(生成工作区)、运行该文件,得到实验结果。(4) 通过给定的函数,理解所给代码的功能进而改写程序代码,使程序可以对图像实现指定的空间变换,包括平移、旋转、缩放。4. 实验回答问题(1) 请给出图像坐标变换的基本公式和实现原理,并着重说明例程中的算法。(2) 写出平移矩阵、缩放矩阵、旋转(绕z轴)矩阵。5. 练习【基础练习】(1) 修改例程,使得程序可以每次按键旋转一次图像。(这个修

29、改在现在的代码上比较困难,需要把rotate函数解开,直接在main函数里写)(2) 修改例程,使得程序可以连续循环地旋转图像。【扩展练习】(1)使用cvFlip函数实现图像绕x,y轴或中心旋转。(2)修改例程,使得程序可以在旋转图像的同时缩放图像。【高层进阶】(1) 使用cvResize函数实现图像的缩放功能。(2) 编写程序,实现图像的平移、旋转和缩放综合功能。6. 实验报告要求实验报告要求写明以下7方面内容:(1) 写明实验目的。(2) 写明实验内容和步骤。(3) 写出空间变换所涉及的图像处理函数,并加详细的注释。(4) 描绘并解释实验结果,并对实验结果进行分析。(5) 写明实验中存在的

30、不足,以及改进的方法。(6) 回答实验中涉及到的问题。(7) 写出本次实验的体会。7. 预习内容(1) 空域图像增强的概念是什么?有哪些分类?(2) 给出几种常见的图像灰度映射函数。8. 参考程序代码/* 程序名:rotate.cpp 功 能:使用OpenCV函数实现图像的旋转(平移和缩放)。*/#include #include #include #include #include void myRotate(IplImage* ,int); /声明自定义的图像旋转函数int main()IplImage *src;src=cvLoadImage(lena.jpg);if(!src) pri

31、ntf(加载图片失败!n);return -1;cvNamedWindow(src,1);/窗口固定大小cvMoveWindow(src,200,80);/设定窗口左上角坐标位置cvShowImage(src, src); int ang=45;cvRotate(src, ang);/旋转图像cvWaitKey(0);cvReleaseImage(&src);cvDestroyWindow(src);return 0;void myRotate(IplImage* src,int angle)/自定义图像旋转函数 IplImage *dst=0; dst = cvCloneImage (src

32、); float m6;int w = src-width;int h = src-height;m0 = cos(angle * CV_PI/180);m1 = sin(angle * CV_PI/180);m2 = w*0.5f;m3 = -m1;m4 = m0;m5 = h*0.5f;CvMat M = cvMat( 2, 3, CV_32F, m );/初始化一个2行3列的矩阵M(矩阵元素的数据类型为32位float型)cvGetQuadrangleSubPix( src, dst, &M);/以M矩阵变换src图像为dst图像 cvNamedWindow(dst,1); cvMove

33、Window(dst,500,80);cvShowImage(dst, dst);9. OpenCV数据结构与基本函数CvMat结构定义多通道矩阵,如下(在cxcore/cxarray.cpp中):typedef struct CvMat int type; /元素类型和标记 int step; /以字节为单位的行数据长度 /* for internal use only */ int* refcount; int hdr_refcount; union uchar* ptr; short* s; int* i; float* fl; double* db; data; /data指针#ifd

34、ef _cplusplus union int rows; int height; ; union int cols; int width; ; #else int rows; /行数 int cols; /列数#endif CvMat;函数说明:cvMat初始化矩阵函数语法:CvMat cvMat(int rows, int cols, int type, void *data=NULL)参数:rows矩阵行数,cols矩阵列数,type元素类型,data可选项,指向分配给矩阵头的数据指针。OpenCV中重要的矩阵变换函数,使用方法为cvMat* cvCreateMat ( int rows

35、, int cols, int type ); 这里type可以是任何预定义类型,预定义类型的结构如下:CV_ (S|U|F)C。于是,矩阵的元素可以是32位浮点型数据(CV_32FC1),或者是无符号的8位三元组的整型数据(CV_8UC3),或者是无数的其他类型的元素。一个CvMat的元素不一定就是个单一的数字。在矩阵中可以通过单一(简单)的输入来表示多值,这样我们可以在一个三原色图像上描绘多重色彩通道。对于一个包含RGB通道的简单图像,大多数的图像操作将分别应用于每一个通道(除非另有说明)。cvGetQuadrangleSubPix 使用子像素精度提取像素四边形。该函数通过指定的变换矩阵对

36、原图像进行相应的变换。语法:void cvGetQuadrangleSubPix( const CvArr *src, CvArr *dst, const CvMat *map_matrix)参数:src 输入图像 dst 提取的四边形 map_matrix 为2*3的变换矩阵A | b说明:此函数以子像素精度从图像src中提取四边形,并将结果存储于dst,计算公式如下: dstx + width(dst)/2, y+height(dst)/2 = src(,)其中,A和b为几何形变参数,均来自映射矩阵map_matrix。映射矩阵为:map_matrix=此处,非整数坐标的像素点值通过双线性

37、插值得到。多通道图像的每一个通道都单独计算。这个函数旋转图像后,超出原图像部分,默认的是重复边界模式。cvResize图像大小变换函数功能:函数 cvResize 将图像 src 改变尺寸得到与 dst 同样大小。若设定 ROI,函数将按常规支持 ROI.语法:void cvResize( const CvArr* src, CvArr* dst, int interpolation= CV_INTER_LINEAR );参数:src 输入图像dst 输出图像interpolation 插值方法,包括:(1) CV_INTER_NN - 最近邻插值(2)CV_INTER_LINEAR - 双线

38、性插值(默认时使用)(3)CV_INTER_AREA - 使用像素关系重采样。当图像缩小时,该方法可以避免波纹出现。当图像放大时,类似于 CV_INTER_NN 方法。(4)CV_INTER_CUBIC - 立方插值cvFlip垂直,水平或既垂直又水平地翻转二维数组语法:void cvFlip( const CvArr* src, CvArr* dst=NULL, int flip_mode=0)参数:src 输入数组dst 输出数组,若dst = NULL,则翻转是在内部替换。flip_mode 指定怎样翻转数组。若=0,则绕x轴翻转;若0,则绕y轴翻转;若 0,则dst(i,j)=src(

39、i,cols(src1)-j-1),绕y轴旋转if flip_mode 0,则dst(i,j)=src(rows(src)-i-1,cols(src)-j-1),绕x轴和y轴旋转实验4 图像灰度变换(综合性,3.1节)1. 实验目的(1) 了解空域图像增强的概念与分类。(2) 掌握不同的灰度变换方法。(3) 能设计相应代码实现灰度变换。2. 实验内容编写程序用OpenCV实现对图像的各种灰度变换。需要实现的功能有:对比度增强;图像求反;动态范围压缩;灰度切分。3. 实验步骤(综合性实验)(1) 创建控制台项目,添加源文件imadjust.cpp。(2) 编写程序代码,使程序可以对图像进行对比度

40、增强。(3) 编译连接,运行该文件,做出实验结果一。(4) 改写程序代码,使程序可以对图像求反,做出实验结果二。(5) 改写程序代码,使程序可以对动态范围压缩,做出实验结果三。(6) 改写程序代码,使程序可以对灰度切分,做出实验结果四。4. 实验回答问题(1) 如何获取一幅图像中某个像素点的灰度值?(2) 如何给目标图像中的像素点重新赋灰度值?(3) 如何修改程序,使得图像能够对彩色图像(三通道)进行幅值的映射?5. 练习【基础练习】根据例程,自己编写实验步骤中所提到的四种灰度变换功能。【扩展练习】(1) 试着不用例程的指导,自己独立编写实验步骤中所提到的四种灰度变换功能,要求程序清晰,无冗余代码。(2) 给定一个灰度映射函数曲线,要求编程实现指定图像的灰度映射,并显示原图像和目标图像。 (3) 对两幅尺寸均为M*N的图像,通过获取各对应像素的灰度值进行图像相加,显示叠加后的图像。 【高层进阶】(1) 修改程序,实现对彩色图像三通道幅值的变换。(2) 实现尺寸相同的彩色图像相加功能。6. 实验报告要求实验报告要求写明以下7方面内容:(1) 写明实验目的。(2) 写明实验内容和步骤。(3) 写出每种灰度变换的图像处理函数,并

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服