收藏 分享(赏)

武大印包C 实习图像实习报告.doc

上传人:精品资料 文档编号:8570904 上传时间:2019-07-03 格式:DOC 页数:13 大小:18.50KB
下载 相关 举报
武大印包C  实习图像实习报告.doc_第1页
第1页 / 共13页
武大印包C  实习图像实习报告.doc_第2页
第2页 / 共13页
武大印包C  实习图像实习报告.doc_第3页
第3页 / 共13页
武大印包C  实习图像实习报告.doc_第4页
第4页 / 共13页
武大印包C  实习图像实习报告.doc_第5页
第5页 / 共13页
点击查看更多>>
资源描述

1、1武大印包 C+实习图像实习报告导读:就爱阅读网友为您分享以下“武大印包 C+实习图像实习报告”资讯,希望对您有所帮助,感谢您对 的支持!面向对象程序设计实习报告图像部分马滔实验目的:1.熟悉 Microsoft VisualC+ 6.0 中采用 MFC 应用程序向导建立的 MDI 框架。 2.学会在多文档程序下编辑代码,运用类向导等工具。 3.实现 BMP 图片的读取、显示、保存与图像处理包括负像、灰度化、二值化 等操作。一、功能模块分析这个程序主要是实现实现 BMP 图片的读取、 显示、 保存与图像处理包括负像、 灰度化、二值化。 1.图片的存取 1.1 BMP 图片的读取 在 mtgDo

2、c.cpp 文件的 OnOpenDocumen()函数实现 BMP 文件的读取。读取 功能的实现函数中需要传入 BMP 图片的名字路径,然后该函数沿着此路径去寻 找相应的 BMP 图片,读取图像数据进内存生成 DIB,并存放在 m_lpDib 所指向 的缓冲区,2若返回值为 1,则会读取打开此图片;否则,则会报 Read error 的错 误。 1.2 BMP 图片的显示 修改 CmtgView 中的 OnDraw()函数和 OnInitialUpdate()函数,实现图片的显 示。在显示函数实现其功能时,需要传入给定设备环境指针,以及需要显示的矩 形区域在设备环境中的位置,然后将 m_lpD

3、ib 所指向的 DIB 显示出来并可根据 需要设置显示窗口大小。 1.3 BMP 图片的保存 在 mtgDoc.cpp 文件的 OnSaveDocument()函数实现 BMP 文件的保存。保存 图片时则需给定一个图像文件名及其路径,将 m_lpDib 指向 DIB 存盘,当找到 此路径后,应用程序自然将其保存在当前路径下。 2.图片的操作 2.1 BMP 图片的负像 void CMtgView:OnReverse()函数将 m_pImgData 作为输入图像, 将其求负像 操作,结果存入 m_pImgDataOut 中。黑白图像的输出结果与原来相反,即原来 的白色输出为黑色, 原来的黑色输出

4、为白色。 对于彩色图像, 要分通道单独处理, 最终得出的仍然是彩色图像,其色彩与原来的成互补关系。 2.2 BMP 图片的灰度化 void CMtgView:OnGray()函数将 m_pImgData 作为输入图像,将其求灰值操 作,结果存入 m_pImgDataOut 中。应用程序丢掉图像的彩色成分,用灰度来表 示图像的亮度信息,最终输出黑白图像。其只处理彩色图像。 2.3 BMP 图片的二值化3建立一个阈值对话框并添加 class CDogThreshold : public CDialog 在其中定义 int m_iThresh 用 于 传 递 阈 值 。 然 后 void CMtgV

5、iew:OnBinary() 函 数 将 m_pImgData 作为输入图像,根据给定的阈值 m_iThresh 对图像进行二值化, 结 果存入 m_pImgDataOut 中。若是彩色图像,则先将图像进行灰值图像后再二值 化。然后应用程序根据设定的阈值,将图像分成目标和背景两个部分。最终输出 黑白图像。二、实验环境与步骤当前的设计是在 Windows 7 的 32 位系统中,安装 Microsoft VisualC+ 6.0 的可视化集成开发环境 (integrated development environment, IDE) 下进行的。 采用 MFC App Wizard 应用程序向导建

6、立的 MDI(多文档)框架 mtg 实现对图像 的操作和编辑。具体过程如下:一 创建工程与前期准备 1. 新建程序 运行 Microsoft VisualC+ 6.0 在其中打开新建创建工程, 采用 MFC App Wizard 应用程序向导建立的 MDI(多文档)框架的工程 mtg。 2. 添加新类 向新建的工程中添加新的类 CImageCenterDib 和 CGrayTrans,首先是将 ImageCenterDib.cpp,ImageCenterDib.h;GrayTrans.cpp,GrayTrans.h 这四个文件 复制到所创建的程序中,在 file view 中的 Source

7、Files 中添加两个.cpp 的资源文 件,4在 Head Files 中添加两个.h 的头文件。并在 CMtgView 类中的 mtgView.cpp 和 CMtgDoc 类的 mtgView.cpp 文件包含新加入的两个类的 头文件#include “ImageCenterDib.h”和#include “GrayTrans.h”。其中类 CImageCenterDib 主要实现 图像的打开,显示和保存。CGrayTrans 主要实现对图像的编辑。 二 图像的基本操作,打开,显示和保存。 1. 在文档类中定义一个私有属性的 ImageCenterDib 类对象 m_dib, 用来为 打开

8、 BMP 文件创建一个 ImageCenterDib 类对象。 Private : ImgCenterDib m_dib; 并实现一个公有函数 GetPDib(),用来返回 m_dib 的指针,为视图类访问文 档类 m_dib 数据提供之处。 ImgCenterDib *GetPDib() return 2.图像的读取 首 先 通 过 类 向 导 向 CMtgDoc 中 添 加 函 数 OnOpenDocumen() 。 然 后 在 mtgDoc.cpp 文件的 OnOpenDocumen()函数中添加如下代码, 实现 BMP 文件的读 取5图一 3.BMP 图片的保存 首 先 通 过 类 向

9、 导 向 CMtgDoc 中 添 加 函 数 OnSaveDocumen() 。 然 后 在 mtgDoc.cpp 文件中的 OnSaveDocument()函数中添加如下代码,实现 BMP 文件的 保存图二 4.BMP 图片的显示 用类向导向 CMtgView 中添加 OnDraw()函数和 OnInitialUpdate()函数,然后 再编辑其中代码实现图片的显示和子窗口中滚动条的添加。图三6图四 三 图像的编辑,灰度化,负像和二值化。 1. 添加菜单项 在 ResourceView 视图下打开 Menu 文件夹,将其中的子窗口菜单栏的 ID 改 为 IDR_MTGTYPE。 然后添加一个

10、菜单项图像编辑, 接着向图像编辑中添加子菜单 项:灰度化(ID_EDIT_GRAY) ,负像(ID_EDIT_REVERSE) ,二值化(ID_BINARY) 。图五 然后在 CMtgView 类中分别为三个子菜单项添加菜单事件处理函数。void CMtgView:OnGray();void CMtgView:OnReverse();void CMtgView:OnBinary() 2.灰度化在 CMtgView 类中映射“灰度化”菜单事件处理函数 OnGray()。具体代码如下:7图六 3.负像 在 CMtgView 类中映射“负像”菜单事件处理函数 OnReverse ()。具体代码如下:

11、图七84.二值化 1)建立一个如下图的对话框,用来传递通过我们手工输入的阈值。图八 首先新建一个对话框并添加一个对话框类 CDlgThreshold,更改其 ID 为 IDD_DLG_THRESH,然后在其中添加一个编辑框用来输入阈值,其 ID 为 IDC_THRESH,并为编辑框添加一个变量 int m_iThresh;记录阈值。并设 定其范围为 0255。图九 2)在 CMtgView 类中中映射“二值化”菜单事件处理函数 OnBinary ()。图十9三、实验结果及分析一实验结果截图 1. 图片的打开图十一 2. 图片的显示图十二103. 图片的保存图十三 4. 图片的负像图十四115.

12、 图片的灰度化图十五 6. 图片的二值化图十六12图十七二总结体会 1.通过图像的实习对如何使用 VC 的应用程序向导有了一些概念,同时可 以自己编辑简单的对话框,会使用类向导做一些添加函数和变量的工作。 2.懂得了一些简单的函数与菜单项的响应关系,以及对话框元素的一些消 息响应函数的添加编辑和作用。学会一些使用类向导的方法。 但是在编程中也暴露出很多问题: 1.在此次编程中感觉自己最大的问题是第一对于 C+的基础知识掌握不 牢,如类的继承,构造函数作用,虚函数的作用等等, 2.对于 VC 6.0 不熟悉, 在用 MFC 应用程序向导的时候不了解其整体结构, 对其创立的类及函数的功能不了解。 3.自己不会改错,在编程中肯定会或多或少地出现一些 bug,我们应该自 己会对自己的程序进行调试,可是由于实践太少,真的常常不知道怎么去调 试。 在编程中常常犯一些小错误, 经常在调用某个自定义的类的时候忘记在调 用的文件中包含类的头文件,或者是调用函数时候忘记事先声明。对于对话 框也不熟悉,在一开始的时候,将对话框画好后,里面的按钮也放好了,都 改好了 ID,然后直接去视图类中编辑二值化的函数,而忘记要定义一个对话 框类了。这一切的错误归根结底源于练少了。13百度搜索“就爱阅读”,专业资料,生活学习,尽在就爱阅读网,您的在线图书馆

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报