C++课程设计报告--图像浏览器的设计与实现

合集下载

c浏览器课程设计

c浏览器课程设计

c 浏览器课程设计一、课程目标知识目标:1. 学生能够理解浏览器的基本概念,掌握浏览器的功能与用途。

2. 学生能够了解不同类型的浏览器,并学会区分它们的特点及适用场景。

3. 学生掌握浏览器的基本操作,如搜索、浏览网页、保存网页、使用书签等。

技能目标:1. 学生能够独立安装与卸载浏览器,并调整浏览器设置以满足个性化需求。

2. 学生学会使用浏览器的开发者工具进行简单的网页调试和性能分析。

3. 学生能够运用浏览器的高级功能,如多标签管理、隐私模式浏览等,提高上网效率。

情感态度价值观目标:1. 培养学生正确的网络使用观念,激发他们对互联网科技的兴趣和探究欲望。

2. 增强学生的网络安全意识,教育他们在上网过程中保护个人隐私和数据安全。

3. 引导学生养成健康上网的习惯,合理安排上网时间,自觉抵制不良信息。

课程性质分析:本课程为信息技术课程,旨在帮助学生掌握浏览器的使用技巧,提高他们在网络环境下的信息获取和处理能力。

学生特点分析:本课程针对的是初中年级学生,他们对新鲜事物充满好奇,已具备一定的计算机操作基础,但需要进一步引导和培养正确的网络使用习惯。

教学要求:1. 注重理论与实践相结合,让学生在实际操作中掌握浏览器知识。

2. 教学过程中要关注学生的个体差异,提供个性化指导,确保每个学生都能学有所获。

3. 教师应引导学生主动探索、合作交流,培养学生的自主学习能力和团队协作精神。

二、教学内容1. 浏览器概述- 浏览器的定义与作用- 常见浏览器类型及特点2. 浏览器的安装与设置- 浏览器下载与安装方法- 浏览器界面及基本操作介绍- 浏览器个性化设置与调整3. 浏览器基本功能- 网页搜索与浏览- 网页保存与打印- 书签与历史记录管理4. 浏览器高级功能- 多标签管理- 隐私模式与无痕浏览- 浏览器扩展程序与插件安装5. 网络安全与信息保护- 网络安全意识培养- 个人隐私保护措施- 数据安全与防范恶意软件6. 网络素养与道德规范- 健康上网习惯培养- 抵制不良信息- 网络道德与法律法规教学安排与进度:第一课时:浏览器概述、安装与设置第二课时:浏览器基本功能第三课时:浏览器高级功能第四课时:网络安全与信息保护第五课时:网络素养与道德规范教学内容与教材关联:本教学内容与教材中关于浏览器知识的相关章节紧密关联,涵盖了浏览器的基本概念、操作技巧、网络安全及网络素养等方面,旨在帮助学生全面掌握浏览器相关知识。

图片浏览系统的设计与实现设计课程设计

图片浏览系统的设计与实现设计课程设计

摘要八十年代中期,随着硬件设备的发展,使得图像技术和多媒体技术得到了长足的发展,计算机处理的内容由当初的单一文字扩大到了动画、文字、声音、视频、图像等多种媒体形式。

目前,伴随着网络技术和Internet的发展,图像技术的功能得到了更好的发挥。

本文详细描述了图像和图形技术的产生,发展以及在现实生活中的实际应用;分析了表示媒体、显示媒体、存储媒体和传输媒体间互相如何协同工作的运做过程;阐述了有关图像技术的关键点,开发技术和应用前景。

本文以自主开发的图像系统为基点,论述了软件开发的过程,模式和技术点。

对于图像技术的编码格式,格式转换,数据压缩和流媒体技术结合等应用进行的详细论述。

软件系统采用了大量的设计模式和软件工程方法,解决了内聚与耦合的问题,实现了软件的易扩展与易维护,文中也对设计模式做了详细的叙述,并且对现今流行的图片格式和这些格式的开发进行了介绍。

同时,本文围绕着图像浏览系统的剖析进行展开,列出了一些如BMP转AVI等关键技术的代码,以及一些框架的设计,以十六个本系统主要功能为框架,对每个功能以及相关技术的历史,发展和开发做了论述。

对一些相关的技术和技术点也做了解释和说明。

解决的图像浏览技术方面一些问题。

关键词:图像编码图像浏览图像压缩设计模式框架设计AbstractIn the middle of the 1980’s, with the development of the hardware and computer device, graphic technology and multimedia technology are developing more and more quickly. The contents which computers are able to process extend from the single style of characters to the motivation, sound, video and graphics. Nowadays, with the aid of the Internet, graphic technology and image manipulation are easily bringing into play in our daily life. This paper detailedly describes the generation and the development of the image technology and graphics technology; analyses the relations of the perception medium, representation medium, presentation medium, storage medium and the transmission medium; discourses upon the key point, developing technology and the application prospect. This paper is based on the graphic system, which is developed by the author. It not only dissertates the common procedure, patterns and technical points in developing of the software. But also it discussed the coding, format exchange and data compressing in the graphics. This graphic system exercises lots of design patterns and software engineering methods and solves the problems of cohesion and coupling. It achieves the extendibility and usability of software. All above especially the design pattern are depicted in the paper. Meanwhile the paper introduces the popular formats of pictures and with the analysis of this graphic browsing system; we discuss the framework of this system and some key codes such as BMP converting to A VI. There are 16 main parts in the paper. In each part, we discourse and explain on the history, development and exploitation of the related technology. Key words:i mage coding image browsing image compressing design pattern framework design目录摘要 (I)Abstract (II)目录............................................................................................................................................. I II 引言.. (1)第1章图像技术概述 (2)1.1 图像技术的发展 (2)1.2 图像技术的基本概念 (2)1.2.1 图片格式 (2)1.2.2 图片分辨率 (3)1.2.3 RGB与CMYK (4)1.2.4 色彩位数 (5)1.2.5 Pixel与DPI (5)1.2.6 FM网屏技术 (5)1.3 图像技术的应用 (6)第2章开发工具与系统界面设计 (8)2.1 开发工具的选择 (8)第3章图像的编码与解码 (9)3.1 经典图像编码技术 (9)3.2 第二代编码技术 (10)3.3 编码技术的标准化 (11)3.4 编码技术的发展方向 (13)3.5 解码技术及本系统实例 (13)3.5.1 关于MPEG的解码的介绍 (13)第4章屏幕截取及部分屏幕截取 (20)4.1 整个屏幕截取及实现 (20)4.2 部分屏幕截取及实现 (21)第5章图像压缩 (25)5.1 有损压缩与无损压缩 (25)5.2 压缩编码压缩概述 (26)5.3 压缩编码的方法 (26)5.6 LZW算法 (30)5.7 JPEG编码标准 (31)5.8 本系统中利用JPEG编码实现压缩 (35)第6章图像的局部放大技术及实现 (37)6.1 实用价值 (37)6.2 算法原理 (37)6.3 实现步骤 (37)6.4 技术剖析 (41)第7章本系统中的设计模式 (43)7.1 什么是模式 (43)7.2 模式的作用 (45)7.3 模式的解决的问题 (47)7.4 本系统中使用的模式 (48)结论............................................................................................................. 错误!未定义书签。

基于c的图像处理课程设计

基于c的图像处理课程设计

基于c 的图像处理课程设计一、课程目标知识目标:1. 学生能理解C语言在图像处理中的基本应用,掌握相关的数据结构和算法。

2. 学生能描述图像处理的基本概念,如像素、分辨率、颜色模型等。

3. 学生能运用C语言实现图像的基本操作,包括读取、显示、保存等。

技能目标:1. 学生能运用C语言编写简单的图像处理程序,如灰度化、二值化、图像旋转等。

2. 学生能通过实践操作,掌握C语言在图像处理中的调试和优化技巧。

3. 学生能运用所学知识解决实际问题,具备一定的图像处理项目实践能力。

情感态度价值观目标:1. 学生通过学习图像处理课程,培养对计算机视觉领域的兴趣,提高学习积极性。

2. 学生在学习过程中,学会与他人合作,培养团队协作能力和沟通能力。

3. 学生通过解决实际问题,认识到所学知识在实际应用中的价值,增强自信心。

课程性质:本课程为选修课,适用于有一定C语言基础的学生,旨在提高学生的编程能力和图像处理技能。

学生特点:学生具备基本的C语言编程能力,对图像处理有一定的好奇心,但可能缺乏实际操作经验。

教学要求:结合课程性质和学生特点,采用案例教学、实践操作、小组合作等方式,确保学生能够掌握图像处理的基本知识和技能。

在教学过程中,注重引导学生主动探究,培养学生的创新意识和实际操作能力。

通过课程学习,使学生能够达到上述课程目标,为后续相关课程和项目实践打下基础。

二、教学内容1. 图像处理基础理论:- 图像的基本概念:像素、分辨率、颜色模型等。

- 图像处理的基本操作:读取、显示、保存等。

2. C语言图像处理库:- OpenCV库的简介与安装。

- OpenCV库的基本使用方法。

3. 图像处理实践:- 灰度化处理:转换彩色图像为灰度图像。

- 二值化处理:将灰度图像转换为黑白图像。

- 图像旋转:对图像进行旋转操作。

- 图像滤波:介绍均值滤波、中值滤波等常见滤波算法。

4. C语言图像处理进阶:- 图像边缘检测:介绍Sobel、Canny等边缘检测算法。

c课程设计浏览器

c课程设计浏览器

c 课程设计浏览器一、教学目标本课程的目标是让学生掌握浏览器的基本使用方法和技巧,包括浏览网页、使用搜索引擎、收藏网页、管理书签、设置浏览器参数等。

知识目标要求学生了解浏览器的工作原理和互联网的基本概念;技能目标要求学生能够熟练操作浏览器,解决常见的浏览问题;情感态度价值观目标要求学生培养良好的网络素养,安全、健康地使用网络。

二、教学内容教学内容主要包括浏览器的基本操作、浏览器的设置与优化、网络安全与隐私保护等方面。

具体包括以下几个方面:1.浏览器的安装与启动,浏览网页的基本操作。

2.搜索引擎的使用,如何高效地获取信息。

3.收藏网页,管理书签,快速访问常用。

4.浏览器参数的设置,提升浏览体验。

5.网络安全与隐私保护,避免上网风险。

三、教学方法本课程采用讲授法、实践操作法、小组讨论法等多种教学方法。

在教学过程中,教师将理论知识与实际操作相结合,引导学生通过实践加深对浏览器使用技巧的理解。

同时,学生进行小组讨论,分享学习心得,提高学生的学习主动性和合作能力。

四、教学资源教学资源包括教材、多媒体课件、实验设备等。

教材选用内容丰富、实用性强的正版教材,为学生提供系统的学习资料。

多媒体课件生动形象,有助于学生理解和记忆。

实验设备包括计算机、投影仪等,为学生提供实践操作的机会。

同时,教师还准备了一系列的网络资源,如教学视频、案例分析等,丰富学生的学习渠道。

五、教学评估教学评估采用多元化的评价方式,包括平时表现、作业、考试等。

平时表现主要评估学生在课堂上的参与程度、提问回答等;作业分为课后练习和项目任务,评估学生的掌握程度和应用能力;考试分为期中和期末考试,全面测试学生的知识掌握和运用能力。

评估方式客观、公正,能够全面反映学生的学习成果。

六、教学安排教学安排共分为16周,每周2课时。

教学地点安排在多媒体教室,以便于展示和操作浏览器。

教学进度按照教材内容进行,确保在有限的时间内完成教学任务。

教学安排考虑学生的作息时间和兴趣爱好,尽量在学生感兴趣的领域进行深入讲解,提高学生的学习积极性。

基于VC的图片浏览器的设计与实现

基于VC的图片浏览器的设计与实现

学号 10031XXXX X大学学士学位论文基于VC++的图片浏览器的设计与实现院(系)名称:软件学院专业名称:软件工程学生姓名:XXX指导教师:XX教授XX大学2014年 6月目录摘要 (III)Abstract ................................................................................................................................................. I V 前言 . (1)第一章绪论 (2)项目背景和意义 (2)实现目标 (2)设计思想 (3)可行性分析 (3)技术可行分析 (3)经济可行性分析 (4)第二章需求分析 (5)任务概述 (5)目标 (5)用户的特点 (5)运行环境 (5)条件与约束 (6)系统整体描述 (6)系统功能说明 (6)用户浏览功能说明 (6)图片旋转功能说明 (8)图片特效功能说明 (9)性能与安全需求 (10)第三章系统概要设计 (11)系统体系结构 (11)系统功能模块图 (12)系统功能模块设计 (12)体统模块关系图 (13)系统模块功能关系表 (13)开发环境与运行环境设计 (14)开发环境 (14)第四章系统详细设计与实现 (16)浏览功能详细设计 (16)特效详细设计 (18). 3 缩放详细设计 (19). 3 旋转功能详细设计 (21)第五章软件测试与改进思想 (23)软件测试 (23)测试方法 (23)测试用例 (23)图片浏览测试用例 (23)缩放及旋转测试用例 (25)特效测试用例 (28)改进思想 (33)结论 (34)参考文献 (35)致谢 (36)摘要在我们的使用环境中,目前市场上大多是采用ACDSee等的图片浏览器,但是此类的图片的浏览器在图片的格式支持等多方面,有一定的问题。

在本文中给大家介绍了多个工能实现的图片浏览器的应用状况和将来的发展的前景。

c图片浏览器课程设计

c图片浏览器课程设计

c 图片浏览器课程设计一、课程目标知识目标:1. 学生能理解图片浏览器的功能与作用,掌握其基本操作流程。

2. 学生能了解图片浏览器的界面布局,掌握各功能按钮的作用。

3. 学生能掌握图片的打开、缩放、旋转、保存等基本操作。

技能目标:1. 学生能运用图片浏览器打开不同格式的图片,并进行基本的编辑操作。

2. 学生能运用图片浏览器进行图片的批量处理,提高工作效率。

3. 学生能通过图片浏览器搜索、下载网络图片,丰富自己的图片资源。

情感态度价值观目标:1. 学生培养对计算机软件操作的兴趣,提高信息技术素养。

2. 学生培养良好的网络图片使用习惯,尊重版权,遵循法律法规。

3. 学生通过图片浏览器的使用,学会欣赏美、发现美,提高审美能力。

课程性质:本课程为信息技术课程,注重实践操作,培养学生的动手能力。

学生特点:六年级学生具备一定的计算机操作基础,对新事物充满好奇,喜欢动手操作。

教学要求:结合学生特点,课程设计要注重实践性、趣味性和操作性,使学生在轻松愉快的氛围中掌握图片浏览器的使用技巧。

教学过程中,关注学生个体差异,给予不同层次的学生针对性的指导,确保每个学生都能达到课程目标。

将课程目标分解为具体的学习成果,便于教学设计和评估。

1. 图片浏览器简介:介绍图片浏览器的定义、作用及其在日常生活和学习中的应用场景。

- 教材章节:第一章 计算机软件应用2. 图片浏览器的基本操作:讲解如何打开、关闭、缩放、旋转、保存图片等基本操作。

- 教材章节:第二章 图片浏览器的使用3. 图片浏览器的进阶操作:学习批量处理图片、下载网络图片等高级功能。

- 教材章节:第三章 图片浏览器的进阶技巧4. 图片浏览器实践操作:结合实例,让学生动手操作,巩固所学知识。

- 教材章节:第四章 实践操作5. 图片浏览器的安全与法规:讲解在使用图片浏览器时应遵守的法律法规,提高学生的网络安全意识。

- 教材章节:第五章 网络安全与法规教学安排与进度:第一课时:图片浏览器简介,基本操作(1课时)第二课时:图片浏览器进阶操作,实践操作(2课时)第三课时:图片浏览器安全与法规,总结与拓展(1课时)教学内容注重科学性和系统性,结合教材章节,让学生在掌握图片浏览器基本操作的基础上,进一步提高操作技能,同时培养良好的网络安全意识。

基于MFC的图片浏览器的设计与实现-毕业论文

基于MFC的图片浏览器的设计与实现-毕业论文

毕业设计论文题目基于MFC的图片浏览器的设计与实现摘要本文详细介绍了使用Visual C++ 6.0(以下简称VC6)设计图片浏览器的方法,通过对图像格式的分析,了解其算法,并根据自身的需要实现相应功能,设计出一个具有特色和个性的基于MFC的图片浏览器。

本论文对图片浏览器的常用功能进行设计开发,包括对图片进行读、写、显示等功能,以及图像处理中一些常用的变换算法,如图像的放大、缩小、旋转及百叶窗、马赛克等显示特效,并将这些功能集成,在Microsoft Windows 2000/XP下测试通过,其中重点对图片浏览器的各种格式图像编码和解码进行详细研究。

通过本文,可以初步掌握图形图像编程的方法与技巧。

关键词:图片浏览器编码解码 MFC目录1 绪论 (1)2 软件开发平台及编程模式 (2)2.1 开发平台的选择 (2)2.2 Microsoft Visual C++及编程模式简介 (3)2.2.1 Visual C++可视化编程 (3)2.2.2 MFC(Microsoft Foundation Classes)应用程序框架 (4)2.2.3 Win32编程 (5)2.2.4 消息映射 (5)3 系统的设计与实现 (8)3.1 需求分析 (8)3.1.1功能需求 (8)3.1.2 性能需求 (9)3.2 总体设计 (9)3.2.1 模块划分 (9)3.2.2 软件界面设计 (10)3.3 详细设计 (11)3.3.1 软件核心数据结构LanImage类 (12)3.3.2 BMP解码/编码模块 (14)3.3.3 PCX解码/编码模块 (15)3.3.4 TGA解码/编码模块 (17)3.3.5 JPEG、GIF解码/编码模块 (20)3.3.6 图像显示模块 (20)3.3.7 全屏浏览模块 (22)3.3.8 图像缩放模块 (23)3.3.9 图像旋转模块 (24)3.3.10 图像特效显示 (25)4 系统的关键技术及难点 (27)4.1 资源的分配和释放 (27)4.2 使用JPEG和GIF读写库时缓冲区格式的转换 (28)4.3 实现旋转时对内存的位操作 (30)4.4 直接对内存中图像数据进行操作实现的特效 (32)4.5 右键菜单的实现 (33)4.6 浏览功能的实现 (34)5 软件测试与改进思想 (36)5.1 软件测试 (36)5.2 改进思想 (36)6 结束语 (37)参考文献 (38)Abstract (39)致谢 (40)仲恺农业工程学院毕业论文(设计)成绩评定表 (41)1 绪论数字图像处理的英文名称是“Digital Image Processing”。

图片浏览器的课程设计报告

图片浏览器的课程设计报告

电子信息工程专业课程设计题单班级 0882053 学生张彬彬课程名称专业课程设计课题图片浏览器的实现设计要求利用visual C#开发工具实现一图片浏览器。

要求完成以下功能:1、打开多张图片,可以控制前后图片的浏览2、可以设置图片的显示方式:全屏或置顶等3、在运行状态中隐藏界面,显示在托盘程序中课题发给日期 2011-6-10 课程设计完成日期 2011-6-21 指导教师方芳等评语:评分:摘要此次课程设计的课题是图片浏览器,通过Visual Studio软件完成。

拿到课题感觉不是很难,只需要用pictureBox1将图片显示出来。

但当开始编程序的时候,就发现了不少问题。

比如说:如何将图片地址全部扫描进来,并存储、什么是在运行状态中隐藏界面,显示在托盘程序中等等都是课本上没有的或者以前没学过的。

于是我们通过图书馆查阅资料,参考程序并在老师的指导下将课题完成了,实现了图片的上一张下一张浏览、放大、缩小、全屏、等要求的功能,并添加了定时器,能实现简单的循环播放功能。

关键字:图片浏览器、全屏、上一张、下一张目录摘要 (2)第一章流程图及功能描述 (3)第二章概要设计及详细设计 (4)第三章调试及结果分析 (8)第四章总结 (13)第五章参考文献 (14)附录程序代码 (15)第一章流程图及功能描述1.1流程图图片浏览器程序流程图1.2功能描述运行程序后如不查找图片所在文件夹,则不能使用。

查找后,将文件夹内JPG、GIF等格式的图片地址扫描存储在listbox内,通过改变其索引实现上下张浏览等功能,扩大缩小等功能则是通过改变pictureBox1的高宽来实现的。

第二章概要设计及详细设计2.1 概要设计利用visual C#设计一个图片浏览器,能完成浏览的基本功能。

2.2 详细设计a:扫描文件夹图片FolderBrowserDialog folder = new FolderBrowserDialog();if (folder.ShowDialog() == DialogResult.OK){listBox1.Items.Clear();PPath = folder.SelectedPath;DirectoryInfo Dinfo = new DirectoryInfo(PPath);FileSystemInfo[] FSinfo = Dinfo.GetFileSystemInfos();for (int i = 0; i < FSinfo.Length; i++){string FileType =FSinfo[i].ToString().Substring(FSinfo[i].ToString().LastIndexOf(".") + 1, (FSinfo[i].ToString().Length -FSinfo[i].ToString().LastIndexOf(".") - 1));FileType = FileType.ToLower();if (FileType == "jpg" || FileType == "png" || FileType == "bmp" ||FileType == "gif" || FileType == "jpeg"){listBox1.Items.Add(FSinfo[i].ToString());}}b:图片的放大if (pictureBox1.Height <= 800 && pictureBox1.Width <= 1000){pictureBox1.Height = pictureBox1.Height * 2;pictureBox1.Width = pictureBox1.Width * 2;}c:图片的缩小if (pictureBox1.Height >= 40 && pictureBox1.Width >= 60){pictureBox1.Height = pictureBox1.Height / 2;pictureBox1.Width = pictureBox1.Width / 2;}d:图片的上下张浏览try{if (listBox1.SelectedIndex != 0){ button4.Enabled = true;listBox1.SetSelected(listBox1.SelectedIndex - 1, true);}else button1.Enabled = false;}catch { }pictureBox1.Image = Image.FromFile(PPath + "\\" +listBox1.SelectedItem);}//当浏览到最后一张时下一张功能失效try{if (listBox1.SelectedIndex < listBox1.Items.Count - 1) {button1.Enabled = true;listBox1.SetSelected(listBox1.SelectedIndex + 1, true);}else button4.Enabled = false;}catch { }pictureBox1.Image = Image.FromFile(PPath + "\\" +listBox1.SelectedItem);}//当浏览到最后一张时下一张功能失效e:全屏及还原(对API不太了解所以直接将实验室电脑屏幕大小赋给picturebox)if (button6.Text == "全屏"){button6.Text = "还原";pictureBox1.Height = 690;pictureBox1.Width = 1280;}else{button6.Text = "全屏";pictureBox1.Height = 440;pictureBox1.Width = 429;}f:显示在托盘中在窗体中放置notifyIcon控件,导入图标。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

浙江工商大学计算机与信息工程学院课程设计报告课程名称:面向对象程序设计专业:计算机科学与技术班级:计科0902 ______学号: 0912300219 _姓名:徐雪琳题目:图像浏览器的设计与实现指导教师:刘春晓2011年1月计算机与信息工程学院2009级《面向对象程序设计》课程设计任务书设计说明书一、问题描述图像浏览器的设计与实现:设计一个能实现图像浏览与编辑功能的Java/C++程序,包括如下功能:1)从已有的图像文件列表中选择某一个,即可显示该图像,并可做旋转等变换。

2)在画布区域上可以进行各种规则图形的绘制(如:线段、矩形、多边形、圆等),还可通过鼠标的拖动自由绘图。

3)可以连续播放所选文件夹下的所有图像。

二、需求分析随着数字产品渐进人们的生活,网络通信技术、图像处理技术以及多媒体技术的发展,越来越多的用户希望能够对已有的数字图片进行查看并能够实现简单的操作。

此图片游览器以C++ Windows编程及OpenCV 为基础,在MFC 的单文档上实现,面向对象的设计及其简洁明了易操作的特点实现图片查看的基本功能,从而也就满足了用户对图片查看的基本要求。

(1)MFC:MFC是用来编写Windows应用程序的C++类集,该类集以层次结构组织起来,其中封装了大部分Windows控件,它所包含的功能涉及到整个Windows操作系统。

MFC不仅为用户提供了Windows图形环境下应用程序的框架,而且还提供了创建应用程序的组件。

应用MFC类库和Visual C++提供的高度可视的应用程序开发工具,可使应用程序开发变得更简单,开发周期极大地缩短,提高代码的可靠性和可重用性。

创建一个名为ImageViewer的MFC单文档程序,步骤为首先在新建工程框中选择MFC AppWizard(exe),工程名为ImageViewer,点下一步后选择基于单个文档的程序,其余的基本选择默认,除了最后选择基类是不是默认的CView而选择CScrollView类,因为在显示图片时可能会出现图片大小比视窗大小还要大,这是就要用到滚动条,所以选择了这个基类。

创建好后会自动产生5个类:CAboutDlg、CImageViewerApp、CImageViewerDoc、CImageViewerView、CMainFrame。

(2)OpenCV里提供了大量图像处理和计算机视觉库,所以在opencv中显示一个图像简单,但是想在MFC的单文档框架中可不是件容易的事。

所以我在MFC单文档的基础上应用了OpenCV类。

在imageViewer程序中添加库文件:cv.lib、cxcore.lib、highgui.lib。

经过上面两步后,就可以在此基础上开始添加功能。

该程序重要功能:1、旋转图像:顺时针旋转90°,逆时针旋转90°,旋转180°。

2、图像缩放:放大,缩小和显示原图。

3、图像标记:规则图形(线段,椭圆,矩形),鼠标自由画图,鼠标恢复自由。

4、画笔颜色选择(无,白,黑),画刷颜色选择(无,白,黑,灰)。

5、连续显示同一文件夹下的图片,并且提示已经到第一张和最后一张。

6、图形文件的打开,保存。

其中用到的主要的类CvvImage(CImage)定义为:(定义在highgui.h头文件中)#define CImage CvvImage/* CvvImage class definition */class CV_EXPORTS CvvImage{public:CvvImage();virtual ~CvvImage();/* Create image (BGR or grayscale) */virtual bool Create( int width, int height, int bits_per_pixel, int image_origin = 0 );/* Load image from specified file */virtual bool Load( const char* filename, int desired_color = 1 );/* Load rectangle from the file */virtual bool LoadRect( const char* filename,int desired_color, CvRect r );#ifdef WIN32virtual bool LoadRect( const char* filename,int desired_color, RECT r ){return LoadRect( filename, desired_color,cvRect( r.left, r.top, r.right - r.left, r.bottom - r.top ));}#endif/* Save entire image to specified file. */virtual bool Save( const char* filename );/* Get copy of input image ROI */virtual void CopyOf( CvvImage& image, int desired_color = -1 );virtual void CopyOf( IplImage* img, int desired_color = -1 );IplImage* GetImage() { return m_img; };virtual void Destroy(void);/* width and height of ROI */int Width() { return !m_img ? 0 : !m_img->roi ? m_img->width : m_img->roi->width; };int Height() { return !m_img ? 0 : !m_img->roi ? m_img->height : m_img->roi->height;};int Bpp() { return m_img ? (m_img->depth & 255)*m_img->nChannels : 0; };virtual void Fill( int color );/* draw to highgui window */virtual void Show( const char* window );#ifdef WIN32/* draw part of image to the specified DC */virtual void Show( HDC dc, int x, int y, int width, int height,int from_x = 0, int from_y = 0 );/* draw the current image ROI to the specified rectangle of the destination DC */virtual void DrawToHDC( HDC hDCDst, RECT* pDstRect );#endifprotected:IplImage* m_img;};而在OpenCV里图像信息保存在IplImage结构里,定义如下:typedef struct _IplImage{int nSize; /* sizeof(IplImage) */int ID; /* version (=0)*/int nChannels; /* Most of OpenCV functions support 1,2,3 or 4 channels */int alphaChannel; /* ignored by OpenCV */int depth; /* pixel depth in bits: IPL_DEPTH_8U, IPL_DEPTH_8S, IPL_DEPTH_16S,IPL_DEPTH_32S, IPL_DEPTH_32F and IPL_DEPTH_64F are supported */char colorModel[4]; /* ignored by OpenCV */char channelSeq[4]; /* ditto */int dataOrder; /* 0 - interleaved color channels, 1 - separate color channels.cvCreateImage can only create interleaved images */int origin; /* 0 - top-left origin,1 - bottom-left origin (Windows bitmaps style) */int align; /* Alignment of image rows (4 or 8).OpenCV ignores it and uses widthStep instead */int width; /* image width in pixels */int height; /* image height in pixels */struct _IplROI *roi;/* image ROI. if NULL, the whole image is selected */struct _IplImage *maskROI; /* must be NULL */void *imageId; /* ditto */struct _IplTileInfo *tileInfo; /* ditto */int imageSize; /* image data size in bytes(==image->height*image->widthStepin case of interleaved data)*/char *imageData; /* pointer to aligned image data */int widthStep; /* size of aligned image row in bytes */int BorderMode[4]; /* ignored by OpenCV */int BorderConst[4]; /* ditto */char *imageDataOrigin; /* pointer to very origin of image data(not necessarily aligned) -needed for correct deallocation */ }IplImage;所以从文件读取中得到一个图像文件,记录为CImage类,其中的图像信息保存在CImage的保护成员中,所以要得到IplImage的数据,必须使用CImage 的成员函数GetImage();修改好IplImage的数据后,要把IplImage放回到CImage 类中,则要使用CImage的成员函数CopyOf(IplImage* img, int desired_color = -1);在此程序的功能函数如图像放大,缩小,还有图像旋转都要用到CImage 和IplImage之间信息的拷贝。

相关文档
最新文档