数字图像处理上机解析.doc

  1. 1、本文档共53页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
昆明理工大学 数字图像处理实验综合报告 学 号: 姓 名: 指导教师: 桂 进 斌 实验一、bmp位图的读取与显示读取图像数据并显示。BMP(全称Bitmap)是Windows操作系统中的标准图像文件格式,可以分成两类:设备相关位图(DDB)和设备无关位图(DIB),使用非常广。它采用位映射存储格式,除了图像深度可选以外,不采用其他任何压缩,因此,BMP文件所占用的空间很大。BMP文件的图像深度可选lbit、4bit、8bit及24bit。BMP文件存储数据时,图像的扫描方式是按从左到右、从下到上的顺序。由于BMP文件格式是Windows环境中交换与图有关的数据的一种标准,因此在Windows环境中运行的图形图像软件都支持BMP图像格式。 2、bmp图像组成: (1)位图头文件数据结构,它包含BMP图像文件的类型、显示内容等信息; 2)位图信息数据结构,它包含有BMP图像的宽、高、压缩方法,以及定义颜色等信息; 3)调色板,这个部分是可选的,有些位图需要调色板,有些位图,比如真彩色图(24位的BMP)就不需要调色板;4)位图数据,这部分的内容根据BMP位图使用的位数不同而不同,在24位图中直接使用RGB,而其他的小于24位的使用调色板中颜色索引值。读取图像数据并显示。1)生成一名为dip(学生使用自己的名字)的基于MFC的应用程序框架:选择file菜单new选项,在打开的窗口中选择project选项,选中MFC。并在project name输入dip ,选择存放project的位置; (2)在应用程序中加入具体的函数和变量: a、在CdipView.h中加入如入变量: public: int m_x; HBITMAP m_Bmp; LPVOID m_ColorList; LPBYTE m_Image; LPBITMAPINFOHEADER m_DibHead; enum allocate {None, crtallocate, heapallocate}; allocate m_nBmpallocate; allocate m_nImageallocate; DWORD m_ImageSize; int m_nPalette; HANDLE m_hFile; HANDLE m_hMap; LPVOID m_lpvFile; HPALETTE m_hPalette; HGLOBAL m_hGlob; 利用ClassWizard向CdipView类中加入如下成员函数。 void zftjh(unsigned char *lpDib,long lWidth,long lHeight); void SetPaletteSize(int nBitCount); void Clear(); BOOL ReadFile(CFile *pFile); BOOL SetPalette(); BOOL GetPalette(); BOOL DibToDC(CDC* pDC,CSize size); BOOL MemToDib(LPVOID lmem); CSize GetDibSize(); b、利用资源编辑器,在主菜单中添加消息响应函数OnFileOpen(),具体方法为打开管理窗口,在资源栏中展开资源文件,选择menu并打开,双击“IDR_MAINFRAME”,选择“文件”菜单下“打开”子菜单,右击在快捷菜单中选择“添加事件处理程序”,选择“CDipView类”,添加消息响应函数,单击“编辑”,并加入如下代码: CFileDialog filedlg(TRUE,bmp,*.bmp); if(filedlg.DoModal()!=IDOK) return; CFile myfile; myfile.Open(filedlg.GetPathName(),CFile::modeRead); if(ReadFile(myfile)==TRUE) Invalidate(); SetPalette(); c、修改OnDraw()函数,添加如下代码: BeginWaitCursor(); CSize DibSize = GetDibSize(); DibSize.cx *= m_x; DibSize.cy *= -m_x; DibToDC(pDC, DibSize); EndWaitCursor(); 在CDipView类的构造函数中加入:m_Image=NULL; m_DibHead=NULL; e、在初始化函数OnInitialUpdate()中加入如下代码替换原来的代码: ? m_x=25; ? CSize MaxSize(24000,3200

文档评论(0)

美洲行 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档