欢迎来到天天文库
浏览记录
ID:38493264
大小:227.50 KB
页数:7页
时间:2019-06-13
《数字图像实验图像直方图分析1234》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、试验三:图像直方图分析一·实验目的1.掌握VC++6.0图像编程的基本操作2.应用VC++6.0编程绘制灰度直方图。二·实验内容1.用VC++6.0绘制灰度直方图;2.对图像进行直方图分析。三·实验步骤(1)启动VC++6.0,打开Dip工程。(2)将Pointpro.h、Pointpro.cpp文件及Areapro.h、Areapro.cpp文件拷贝到当前工程目录文件里面。(3)在Fileview-->Dipfilesà右键àSettingàLinkà添加Pointpro.h、Pointpro
2、.cpp文件及Areapro.h、Areapro.cpp文件。(4)在菜单栏àinsertàresouceàdialogànew,在对话框模版的非控制区点击鼠标右键,在弹出的对话框中选properties,设置为ID:IDD_DLG_Intensity,C标题:Histogram,关闭属性对话框,回到“建立类向导”(MFCclasswizard),在弹出的对话框中选创建新类CDlgIntensity后确定。并且在FileView中修改DlgIntensity.cpp和DlgIntensity.h
3、相应的代码;(5)在弹出的对话框中,添加如下的按钮等控件:例如右键单击上面最大的静态文本,在弹出的对话框中选“属性”,在属性对话框中添加如下内容:(6)在ResourceView栏中àMenuà选IDR_DIPTYPE,如图在View菜单栏下空的一栏中,右键鼠标,在弹出的对话框中选属性properties,在弹出的对话框中,设置:ID:ID_VIEW_HIST,标题为Histogram,在建立的类向导中选类为CDlgIntensity,确定。(7)在StdAfx.h中添加#include4、h.h>(8)在DipView.h中//{{AFX_MSG(CDipView)下添加afx_msgvoidOnViewHist();afx_msgvoidOnUpdateViewHist(CCmdUI*pCmdUI);(9)DipView.cpp添加#include"PointPro.h"和#include"DlgIntensity.h",在BEGIN_MESSAGE_MAP(CDipView,CScrollView)处添加:ON_COMMAND(ID_VIEW_HIST,OnViewHist)5、ON_UPDATE_COMMAND_UI(ID_VIEW_HIST,OnUpdateViewHist)在//CDipViewmessagehandlers下面添加:voidCDipView::OnViewHist(){CDipDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);//判断当前是否有图像对象if(pDoc->m_pDibObject==NULL)return;//在点处理CPointPro类中创建用来绘制直方图的数据CPointProPointOper6、ation(pDoc->m_pDibObject);int*pHistogram=PointOperation.GetHistogram();//生成一个对话框CHistDlg类的实例CDlgIntensityHistDlg;//将绘制直方图的数据传递给CHistDlg对话框类的公有成员变量m_pnHistogramif(pHistogram!=NULL){//设置直方图数据指针HistDlg.m_pnHistogram=pHistogram;//设置当前像素值为0的像素数HistDlg.m_n7、CurrentPiexsNum=pHistogram[0];//设置是否为256级灰度图像HistDlg.m_bIsGray256=PointOperation.IsGray256();}//显示对话框if(HistDlg.DoModal()!=IDOK)return;delete[]pHistogram;}voidCDipView::OnUpdateViewHist(CCmdUI*pCmdUI){CDipDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);pCm8、dUI->Enable(pDoc->m_pDibObject->GetNumBits()>=8);}(10)在DipDoc.h中添加:protected:longm_lHeight;longm_lWidth;(11)在DipDoc.cpp中添加菜单命令:#include"AreaPro.h",在CDipDoc::CDipDoc()下面添加{m_pDibObject=NULL;m_bImageLoaded=FALSE;//TODO:addone-timeconstructioncodeherem_
4、h.h>(8)在DipView.h中//{{AFX_MSG(CDipView)下添加afx_msgvoidOnViewHist();afx_msgvoidOnUpdateViewHist(CCmdUI*pCmdUI);(9)DipView.cpp添加#include"PointPro.h"和#include"DlgIntensity.h",在BEGIN_MESSAGE_MAP(CDipView,CScrollView)处添加:ON_COMMAND(ID_VIEW_HIST,OnViewHist)
5、ON_UPDATE_COMMAND_UI(ID_VIEW_HIST,OnUpdateViewHist)在//CDipViewmessagehandlers下面添加:voidCDipView::OnViewHist(){CDipDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);//判断当前是否有图像对象if(pDoc->m_pDibObject==NULL)return;//在点处理CPointPro类中创建用来绘制直方图的数据CPointProPointOper
6、ation(pDoc->m_pDibObject);int*pHistogram=PointOperation.GetHistogram();//生成一个对话框CHistDlg类的实例CDlgIntensityHistDlg;//将绘制直方图的数据传递给CHistDlg对话框类的公有成员变量m_pnHistogramif(pHistogram!=NULL){//设置直方图数据指针HistDlg.m_pnHistogram=pHistogram;//设置当前像素值为0的像素数HistDlg.m_n
7、CurrentPiexsNum=pHistogram[0];//设置是否为256级灰度图像HistDlg.m_bIsGray256=PointOperation.IsGray256();}//显示对话框if(HistDlg.DoModal()!=IDOK)return;delete[]pHistogram;}voidCDipView::OnUpdateViewHist(CCmdUI*pCmdUI){CDipDoc*pDoc=GetDocument();ASSERT_VALID(pDoc);pCm
8、dUI->Enable(pDoc->m_pDibObject->GetNumBits()>=8);}(10)在DipDoc.h中添加:protected:longm_lHeight;longm_lWidth;(11)在DipDoc.cpp中添加菜单命令:#include"AreaPro.h",在CDipDoc::CDipDoc()下面添加{m_pDibObject=NULL;m_bImageLoaded=FALSE;//TODO:addone-timeconstructioncodeherem_
此文档下载收益归作者所有