欢迎来到天天文库
浏览记录
ID:34783935
大小:214.18 KB
页数:11页
时间:2019-03-10
《用vc实现图像阈值分割》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、南昌航空大学实验报告课题名称:数字图像处理实验名称:图像阈值分割班级:姓名:同组人:指导老师评定:签名:一、实验目的用VC++实现位图阈值分割二、实验内容与步骤1、首先建立一个工程。打开VC++6.0,单击文件【files】→新建【new】→工程【projects】在打开的projects下选择MFCAppWizard[exe]→在projectname下输入自己的工程名例如(Fenge)→单击【ok】→在打开的对话框中选择基于单文档【singledocument】→在第四步“MFCAppWizardstep4of
2、6”面板中删掉【隐藏工具栏】和【打印和打印预览】两个选项,之后的全部选择默认,单击finish,出现一个“NewProjectInformation”窗口,单击【ok】。一个简单的工程框架就建好了。2、现在我们正式开始在新建工程Fenge中进行编程实现bmp位图的阈值分割。点击左边框中的【ResourceView】框找到【Menu】点开,双击Menu下的图标,在右面的显示框中创建两个菜单:打开ID:ID_FILE_OPEN阈值分割ID:ID_YuZhiFenGe3、给这两个菜单建立类向导。在右边的窗口中右击“打开”
3、,选择“建立类向导”,然后在打开的对话框中按下图1操作,“Classname”选择“CFengeView”→”ObjectIDs”中选择“ID_FILE_OPEN”→“Message”中选择“COMMAND”,点击“AddFunction”键就会在“Memberfunctions”中,然后点击“EditCode”,在自动生成的OnFileOpen函数中编写代码:voidCFengenView::OnFileOpen(){//TODO:AddyourcommandhandlercodehereCFileDialogf
4、ileDlg(true);fileDlg.m_ofn.lpstrTitle="图片打开对话框";fileDlg.m_ofn.lpstrFilter="BMPFiles(*.bmp) *.bmp ";if(IDOK==fileDlg.DoModal()){m_fileName.Format("%s",fileDlg.GetPathName());m_Dib.LoadFile(m_fileName);Invalidate();}}图1同理,操作“阈值分割”图2选择“CFengeView”。点击“EditCode
5、”,在自动生成“OnYuZhiFenGe”函数中编写代码:voidCFengenView::OnYuZhiFenGe(){//TODO:Addyourcommandhandlercodehereif(m_Dib.IsValid()){inti;intYuzhi;//阈值变量//各颜色分量的灰度分布密度floatmidu[256];//计算灰度分布密度m_Dib.Zhifangtu(midu);//调用灰度统计处理函数//创建灰度直方图对话框CDlgZhiFangTu*dlg;dlg=newCDlgZhiFangTu
6、(this);dlg->Create(IDD_DIALOG_ZhiFangTu);//传递灰度分布密度数据给面板类for(i=0;i<256;i++)dlg->m_fIntensity[i]=midu[i];//显示对话框,由用户进行灰度折线变换dlg->ShowWindow(SW_RESTORE);//创建阈值选择对话框CDlgYuZhiFenGedlg1;dlg1.m_Yuzhi=0;//显示对话框,提示用户输入阈值if(dlg1.DoModal()==IDOK){Yuzhi=dlg1.m_Yuzhi;}//删
7、除对话框deletedlg1;deletedlg;m_Dib.Yuzhifenge(Yuzhi);//调用阈值分割处理函数//重绘Invalidate();}}4、创建一个处理位图的类CDib,且CDib类是由CObject类派生出来的。点击工程菜单栏中的插入【insert】→【insertclass】→类类型选“GenericClass”,→类名称填“CDib”→【ok】。可以看见工程窗口的ClassView中多了一个CDib类;点开CDib类的头文件,输入以下代码,注意变量可以直接复制,声明的函数不要直接复制(
8、在CDib类右击选择“Addmemberfunction”,输入函数类型和函数名)。classCDib:publicCObject{public:RGBQUAD*m_pRGB;BYTE*m_pData;UINTm_numberOfColors;boolm_valid;BITMAPFILEHEADERbitmapFileHeader;//定义了一个文件头结构体
此文档下载收益归作者所有