《数字图像处理》实验指导书Word文件下载.docx

上传人:b****3 文档编号:15828301 上传时间:2022-11-16 格式:DOCX 页数:57 大小:92.36KB
下载 相关 举报
《数字图像处理》实验指导书Word文件下载.docx_第1页
第1页 / 共57页
《数字图像处理》实验指导书Word文件下载.docx_第2页
第2页 / 共57页
《数字图像处理》实验指导书Word文件下载.docx_第3页
第3页 / 共57页
《数字图像处理》实验指导书Word文件下载.docx_第4页
第4页 / 共57页
《数字图像处理》实验指导书Word文件下载.docx_第5页
第5页 / 共57页
点击查看更多>>
下载资源
资源描述

《数字图像处理》实验指导书Word文件下载.docx

《《数字图像处理》实验指导书Word文件下载.docx》由会员分享,可在线阅读,更多相关《《数字图像处理》实验指导书Word文件下载.docx(57页珍藏版)》请在冰豆网上搜索。

《数字图像处理》实验指导书Word文件下载.docx

1.新建应用程序

运行VisualC++6.0;

点击菜单“文件——新建”,打开“新建”对话框;

点击“工程”选项页;

选中“MFCAppWizard(exe)”;

在“位置”编辑框中确定适当的存储路径;

在“工程名称”编辑框中输入DIP?

?

,其中?

为自己姓名的拼音缩写,如DIPLJJ;

按“确定”按钮,进入向导过程。

2.应用程序向导

步骤1:

选择“单文档”,其它不变,

步骤2:

不作改变,点击“下一步”;

步骤3:

不作改变,

步骤4:

取消“打印和打印预览”;

按下“高级”按钮,在“文件扩展名”编辑框中输入bmp,关闭;

点击“下一步”;

步骤5:

选择“作为静态的DLL”,点击“下一步”;

步骤6:

将CDIPLJJView类的基类选择为CScrollView,其它不变,点击“完成”。

(其中LJJ应换为自己姓名的拼音缩写,后同)

点击“确定”。

3.应用程序框架及基本操作

在完成向导过程后,将建立一套应用程序框架,该框架中包含如下几个类:

CDIPLJJApp——应用程序类

CMainFrame——主窗口框架类

CDIPLJJDoc——文档类

CDIPLJJView——视图类

CAboutDlg——关于对话框类

每个类都有一个类定义文件.h,和类实现文件.cpp。

在VC主界面左侧的组合窗口中,切换到“ClassViev”选项页,点击展开“DIPLJJClasses”,将列出该应用程序的所有类。

双击某个类,将在编辑窗口中打开该类的.h文件;

点击展开类,双击类中已实现的某个成员函数,将打开该类的.cpp文件。

4.修改“关于”对话框

在VC主界面左侧的组合窗口中,切换到“ResourceView”选项页,展开“DIPLJJresources”,展开“Dialog”,双击“IDD_ABOUTBOX”,对“关于”对话框进行编辑,在“版权所有(C)2009”之前加上自己的学号和姓名,然后保存。

5.组建和运行程序

点击菜单“组建——组建”,或点击相应的工具条按钮,生成可执行程序(exe);

点击菜单“组建——执行”,或点击相应的工具条按钮,运行该程序,在程序中打开“关于”对话框。

三、建立图像类

1.建立类文件

点击菜单“插入——类”,打开“新建类”对话框;

在类的类型中选中“GenericClass”;

在名称中输入“LImage”;

确定。

建立起LImage类的头文件LImage.h和源文件LImage.cpp。

2.编写类定义代码

打开LImage.h文件,将LImage类的定义代码添加到该头文件中(灰底部分为文件中已有的代码,后同):

classLImage

{

public:

LImage();

virtual~LImage();

BOOLCreate(inta_Width,inta_Height);

voidDestroy();

BOOLIsValid();

BOOLCopyFrom(LImage*a_pImg);

BOOLLoadBmpFile(CStringa_Filename);

BOOLSaveBitmap(CStringa_Filename);

//属性

intm_Width,m_Height;

//图像的宽度,高度,以象素计

intm_WidthBytes;

//每行象素所占字节数

intm_ImageSize;

//象素数据总字节数

BYTE*m_pBits;

//图像数据块

CDCm_DC;

//显示

BOOLBitBlt(HDCa_DestDC,inta_DestX,inta_DestY,inta_Width,inta_Height,

inta_SrcX,inta_SrcY,DWORDa_Rop=SRCCOPY);

BOOLStretchBlt(HDCa_DestDC,inta_DestX,inta_DestY,inta_DestWidth,

inta_DestHeight,inta_SrcX,inta_SrcY,inta_SrcWidth,inta_SrcHeight,

DWORDa_Rop=SRCCOPY);

intFitBlt(HDCa_DestDC,inta_DestX,inta_DestY,inta_DestWidth,inta_DestHeight,

inta_SrcX,inta_SrcY,inta_SrcWidth,inta_SrcHeight,DWORDa_Rop=SRCCOPY);

protected:

HBITMAPm_hBitmap;

HDCm_hMemDC;

private:

HBITMAPm_hOldBitmap;

};

#endif//!

defined(AFX_LIMAGE_H__4BFB411F_B5D3_4A26_8188_919613CED4A8__INCLUDED_)

3.编写类实现代码

打开LImage.cpp文件,将LImage类的实现代码添加到该文件中。

(1)构造及析构函数

LImage:

:

LImage()

m_hBitmap=NULL;

m_pBits=NULL;

m_hMemDC=NULL;

}

~LImage()

Destroy();

(2)图像空间创建函数

按给定的图像尺寸分配图像的内存空间,并定义相关参数。

BOOLLImage:

Create(inta_Width,inta_Height)

if(a_Width==0||a_Height==0)returnFALSE;

if(a_Width<

0)a_Width=-a_Width;

if(a_Height<

0)a_Height=-a_Height;

BITMAPINFObi;

bi.bmiHeader.biSize=sizeof(BITMAPINFOHEADER);

bi.bmiHeader.biWidth=a_Width;

bi.bmiHeader.biHeight=-a_Height;

//使图像原点在左上角;

若为正数则在左下角

bi.bmiHeader.biPlanes=1;

bi.bmiHeader.biBitCount=24;

bi.bmiHeader.biCompression=BI_RGB;

bi.bmiHeader.biSizeImage=0;

bi.bmiHeader.biXPelsPerMeter=11810;

bi.bmiHeader.biYPelsPerMeter=11810;

bi.bmiHeader.biClrUsed=0;

bi.bmiHeader.biClrImportant=0;

HDChdc=CreateCompatibleDC(NULL);

m_hBitmap=CreateDIBSection(hdc,&

bi,DIB_RGB_COLORS,(void**)&

m_pBits,NULL,0);

DeleteDC(hdc);

if(m_hBitmap==NULL||m_pBits==NULL)

{

m_hBitmap=NULL;

m_pBits=NULL;

returnFALSE;

}

BITMAPbm;

GetObject(m_hBitmap,sizeof(BITMAP),&

bm);

m_Width=bm.bmWidth;

m_Height=bm.bmHeight;

m_WidthBytes=bm.bmWidthBytes;

m_ImageSize=m_WidthBytes*m_Height;

m_hMemDC=CreateCompatibleDC(NULL);

if(m_hMemDC==NULL)

DeleteObject(m_hBitmap);

m_hMemDC=NULL;

m_hOldBitmap=(HBITMAP)SelectObject(m_hMemDC,m_hBitmap);

m_DC.Attach(m_hMemDC);

returnTRUE;

(3)图像空间释放函数

voidLImage:

Destroy()

if(m_hBitmap!

=NULL&

&

m_pBits!

m_hMemDC!

=NULL)

m_DC.Detach();

SelectObject(m_hMemDC,m_hOldBitmap);

DeleteDC(m_hMemDC);

(4)图像有效性判别及图像复制函数

IsValid()

return(m_hBitmap!

=NULL);

CopyFrom(LImage*a_pImg)

if(a_pImg==NULL||!

a_pImg->

IsValid())

if(!

Create(a_pImg->

m_Width,a_pImg->

m_Height))

memcpy((void*)m_pBits,(void*)a_pImg->

m_pBits,m_WidthBytes*m_Height);

(5)图像显示函数

直接显示,缩放显示,按适合窗口的尺寸显示图像。

BitBlt(HDCa_DestDC,inta_DestX,inta_DestY,inta_Width,inta_Height,

inta_SrcX,inta_SrcY,DWORDa_Rop)

return:

BitBlt(a_DestDC,a_DestX,a_DestY,a_Width,a_Height,

m_hMemDC,a_SrcX,a_SrcY,a_Rop);

StretchBlt(HDCa_DestDC,inta_DestX,inta_DestY,inta_DestWidth,

inta_DestHeight,inta_SrcX,i

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

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1