数学形态学处理程序实例.docx
- 文档编号:2782761
- 上传时间:2022-11-15
- 格式:DOCX
- 页数:32
- 大小:27.56KB
数学形态学处理程序实例.docx
《数学形态学处理程序实例.docx》由会员分享,可在线阅读,更多相关《数学形态学处理程序实例.docx(32页珍藏版)》请在冰豆网上搜索。
数学形态学处理程序实例
数学形态学处理程序实例
/JEFFView.cpp:
implementationoftheCJEFFViewclass
//
#include"stdafx.h"
#include"JEFF.h"
#include"JEFFDoc.h"
#include"JEFFView.h"
#defineOut(x,y)lpPoints[(x)+(y)*nWidth]
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//CJEFFView
IMPLEMENT_DYNCREATE(CJEFFView,CScrollView)
BEGIN_MESSAGE_MAP(CJEFFView,CScrollView)
//{{AFX_MSG_MAP(CJEFFView)
ON_COMMAND(ID_EROSION,OnErosion)
ON_COMMAND(ID_DILATION,OnDilation)
ON_COMMAND(ID_OPEN,OnOpen)
ON_COMMAND(ID_CLOSE,OnClose)
ON_COMMAND(ID_ZAOSHENG,OnZaosheng)
ON_COMMAND(ID_BIANYUAN,OnBianyuan)
ON_COMMAND(ID_1,On1)
ON_COMMAND(ID_2,On2)
ON_COMMAND(ID_4,On4)
ON_COMMAND(ID_8,On8)
ON_COMMAND(ID_DILATION2,OnDilation2)
ON_COMMAND(ID_EROSION2,OnErosion2)
ON_COMMAND(ID_OPEN2,OnOpen2)
ON_COMMAND(ID_CLOSE2,OnClose2)
ON_COMMAND(ID_SMOOTH,OnSmooth)
ON_COMMAND(ID_RELOAD,OnReload)
ON_COMMAND(ID_TIDU,OnTidu)
ON_COMMAND(ID_BIANYUAN_H,OnBianyuanH)
ON_COMMAND(ID_QUSE,OnQuse)
ON_WM_LBUTTONDOWN()
//}}AFX_MSG_MAP
//Standardprintingcommands
ON_COMMAND(ID_FILE_PRINT,CScrollView:
:
OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT,CScrollView:
:
OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_PREVIEW,CScrollView:
:
OnFilePrintPreview)
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//CJEFFViewconstruction/destruction
CJEFFView:
:
CJEFFView()
{
//TODO:
addconstructioncodehere
ValidDoc=FALSE;
m_i=1;
}
CJEFFView:
:
~CJEFFView()
{
}
BOOLCJEFFView:
:
PreCreateWindow(CREATESTRUCT&cs)
{
//TODO:
ModifytheWindowclassorstylesherebymodifying
//theCREATESTRUCTcs
returnCScrollView:
:
PreCreateWindow(cs);
}
/////////////////////////////////////////////////////////////////////////////
//CJEFFViewdrawing
voidCJEFFView:
:
OnDraw(CDC*pDC)
{
CJEFFDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
//TODO:
adddrawcodefornativedatahere
if(pDoc->lpBitmap)
{
ValidDoc=TRUE;
nWidth=pDoc->nWidth;
nHeight=pDoc->nHeight;
lpBits=pDoc->lpBits;
lpPoints=pDoc->lpPoints;
BITMAPINFOHEADERbmi;
bmi.biSize=sizeof(BITMAPINFOHEADER);
bmi.biWidth=nWidth;
bmi.biHeight=nHeight;
bmi.biPlanes=1;
bmi.biBitCount=24;
bmi.biCompression=BI_RGB;
bmi.biSizeImage=0;
bmi.biXPelsPerMeter=0;
bmi.biYPelsPerMeter=0;
bmi.biClrUsed=0;
bmi.biClrImportant=0;
StretchDIBits(pDC->m_hDC,0,0,nWidth*m_i,nHeight*m_i,0,0,nWidth,nHeight,
lpBits,
(BITMAPINFO*)&bmi,
DIB_RGB_COLORS,
SRCCOPY);
}
}
voidCJEFFView:
:
OnInitialUpdate()
{
CScrollView:
:
OnInitialUpdate();
CSizesizeTotal;
//TODO:
calculatethetotalsizeofthisview
sizeTotal.cx=2000;sizeTotal.cy=1700;
SetScrollSizes(MM_TEXT,sizeTotal);
}
/////////////////////////////////////////////////////////////////////////////
//CJEFFViewprinting
BOOLCJEFFView:
:
OnPreparePrinting(CPrintInfo*pInfo)
{
//defaultpreparation
returnDoPreparePrinting(pInfo);
}
voidCJEFFView:
:
OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)
{
//TODO:
addextrainitializationbeforeprinting
}
voidCJEFFView:
:
OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)
{
//TODO:
addcleanupafterprinting
}
/////////////////////////////////////////////////////////////////////////////
//CJEFFViewdiagnostics
#ifdef_DEBUG
voidCJEFFView:
:
AssertValid()const
{
CScrollView:
:
AssertValid();
}
voidCJEFFView:
:
Dump(CDumpContext&dc)const
{
CScrollView:
:
Dump(dc);
}
CJEFFDoc*CJEFFView:
:
GetDocument()//non-debugversionisinline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CJEFFDoc)));
return(CJEFFDoc*)m_pDocument;
}
#endif//_DEBUG
/////////////////////////////////////////////////////////////////////////////
//CJEFFViewmessagehandlers
//二值形态学:
腐蚀
voidCJEFFView:
:
OnErosion()
{
int*lpMarks=newint[nWidth*nHeight];
intx,y,x1,y1;
intcount;//中间变量
for(y=1;y { for(x=1;x { count=1; for(y1=-1;y1<2;y1++) { for(x1=-1;x1<2;x1++) { if(Out(x+x1,y+y1))//以(x,y)为中心的九个点是否有白色的像素点 count=0;//如果有count=0,否则count=1; } } if(count)lpMarks[x+y*nWidth]=1;//黑色像素点记为1 elselpMarks[x+y*nWidth]=0;//白色像素点记为0 } } for(y=1;y { for(x=1;x { if(lpMarks[x+y*nWidth]==0)Out(x,y)=255;//白色像素点灰度为255 } } deletelpMarks;//释放内存 GetDocument()->PutPoint(); Invalidate(); } //二值形态学: 膨胀 voidCJEFFView: : OnDilation() { intx,y,x1,y1; intcount;//中间变量 int*lpMarks=newint[nWidth*nHeight]; for(y=1;y { for(x=1;x { count=0; for(y1=-1;y1<2;y1++) { for(x1=-1;x1<2;x1++) { if(Out(x+x1,y+y1)==0)//以(x,y)为中心的九个点是否有黑色的像素点 count=1;//若有记为一 } } if(count)lpMarks[x+y*nWidth]=1;//黑色像素点记为1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数学 形态学 处理 程序 实例
![提示](https://static.bdocx.com/images/bang_tan.gif)