资源简介
这是数学形态学中腐蚀与膨胀的源代码,有需要的朋友请放心下载。
代码片段和文件信息
#include “stdafx.h“
#include “cdib.h“
#include “windowsx.h“
#include “math.h“
#define WIDTHBYTES(bits) (((bits) + 31) / 32 * 4)
CDib::CDib()
{
size=0;
}
CDib::~CDib()
{
GlobalFreePtr(m_pBitmapInfo);
}
void CDib::LoadFile(const char* dibFileName)
{
strcpy(m_fileNamedibFileName);
CFile dibFile(m_fileName CFile::modeRead);
dibFile.Read((void*)&bitmapFileHeadersizeof(BITMAPFILEHEADER));
if (bitmapFileHeader.bfType == 0x4d42)
{
DWORD fileLength = dibFile.GetLength();
size = fileLength -sizeof(BITMAPFILEHEADER);
pDib =(BYTE*)GlobalAllocPtr(GMEM_MOVEABLE size);
dibFile.Read((void*)pDib size);
dibFile.Close();
m_pBitmapInfo = (BITMAPINFO*) pDib;
m_pBitmapInfoHeader = (BITMAPINFOHEADER*) pDib;
m_pRGB = (RGBQUAD*)(pDib +
m_pBitmapInfoHeader->biSize);
int m_numberOfColors = GetNumberOfColors();
if (m_pBitmapInfoHeader->biClrUsed == 0)
m_pBitmapInfoHeader->biClrUsed =
m_numberOfColors;
DWORD colorTableSize = m_numberOfColors *
sizeof(RGBQUAD);
m_pData = pDib + m_pBitmapInfoHeader->biSize
+ colorTableSize;
if (m_pRGB == (RGBQUAD*)m_pData) // No color table
m_pRGB = NULL;
m_pBitmapInfoHeader->biSizeImage = GetSize();
m_valid = TRUE;
}
else
{
m_valid = FALSE;
AfxMessageBox(“This isn‘t a bitmap file!“);
}
}
BOOL CDib::IsValid()
{
return m_valid;
}
char* CDib::GetFileName()
{
return m_fileName;
}
UINT CDib::GetWidth()
{
return (UINT) m_pBitmapInfoHeader->biWidth;
}
UINT CDib::GetHeight()
{
return (UINT) m_pBitmapInfoHeader->biHeight;
}
DWORD CDib::GetSize()
{
if (m_pBitmapInfoHeader->biSizeImage != 0)
return m_pBitmapInfoHeader->biSizeImage;
else
{
DWORD height = (DWORD) GetHeight();
DWORD width = (DWORD) GetWidth();
return height * width;
}
}
UINT CDib::GetNumberOfColors()
{
int numberOfColors;
if ((m_pBitmapInfoHeader->biClrUsed == 0) &&
(m_pBitmapInfoHeader->biBitCount < 9))
{
switch (m_pBitmapInfoHeader->biBitCount)
{
case 1: numberOfColors = 2; break;
case 4: numberOfColors = 16; break;
case 8: numberOfColors = 256;
}
}
else
numberOfColors = (int) m_pBitmapInfoHeader->biClrUsed;
return numberOfColors;
}
DWORD CDib::GetDibWidthBytes()
{
byBitCount=m_pBitmapInfoHeader->biBitCount;
LONG nWidth=m_pBitmapInfoHeader->biWidth;
dwWidthBytes = (DWORD)m_pBitmapInfoHeader->biWidth; //8-bits
if(byBitCount == 1) dwWidthBytes = (nWidth + 7) / 8;
else if(byBitCount == 4) dwWidthBytes = (nWidth + 1) / 2;
else if(byBitCount == 24) dwWidthBytes = 3 * nWidth ;
while((dwWidthBytes & 3) != 0)dwWidthBytes++;
return dwWidthBytes;
}
BYTE* CDib::GetData()
{
r
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 300162 2004-07-29 20:33 腐蚀与膨胀\24位腐蚀原图.bmp
文件 3890 2004-04-01 17:30 腐蚀与膨胀\Cdib.cpp
文件 853 2004-04-01 17:30 腐蚀与膨胀\Cdib.h
文件 31328 2008-04-26 16:17 腐蚀与膨胀\DSplit.aps
文件 3626 2008-04-26 16:18 腐蚀与膨胀\DSPLIT.CLW
文件 4158 2003-04-01 08:51 腐蚀与膨胀\Dsplit.cpp
文件 5174 2004-04-01 22:50 腐蚀与膨胀\DSplit.dsp
文件 579 1999-01-28 11:36 腐蚀与膨胀\DSPLIT.DSW
文件 1366 2003-04-01 08:51 腐蚀与膨胀\Dsplit.h
文件 992256 2008-04-26 16:29 腐蚀与膨胀\DSPLIT.NCB
文件 82944 2008-04-26 16:29 腐蚀与膨胀\DSPLIT.OPT
文件 2834 2008-04-26 16:17 腐蚀与膨胀\DSPLIT.PLG
文件 13252 2004-09-20 17:03 腐蚀与膨胀\DSplit.rc
文件 2008 2003-04-01 08:45 腐蚀与膨胀\DSplitDoc.cpp
文件 1509 2003-04-03 17:12 腐蚀与膨胀\DSplitDoc.h
文件 3238 2003-04-02 16:45 腐蚀与膨胀\Dsplitview.cpp
文件 1859 2003-04-01 08:27 腐蚀与膨胀\Dsplitview.h
文件 6439 2003-04-02 10:18 腐蚀与膨胀\DYNSPLITTERWND.CPP
文件 1733 1998-03-10 17:19 腐蚀与膨胀\DYNSPLITTERWND.H
文件 6587 2004-07-29 20:31 腐蚀与膨胀\DynSplitView2.cpp
文件 2136 2003-05-29 07:36 腐蚀与膨胀\DynSplitView2.h
文件 18279 2004-09-13 20:39 腐蚀与膨胀\FuShiYuPengZhangDib.cpp
文件 397 2003-04-27 11:19 腐蚀与膨胀\FuShiYuPengZhangDib.h
文件 3550 2003-04-03 17:15 腐蚀与膨胀\MAINFRM.CPP
文件 1691 2003-04-02 17:00 腐蚀与膨胀\MAINFRM.H
文件 4035 1998-02-03 10:42 腐蚀与膨胀\README.TXT
文件 8888 2008-04-26 16:17 腐蚀与膨胀\Release\Cdib.obj
文件 0 2008-04-26 16:17 腐蚀与膨胀\Release\Cdib.sbr
文件 2368512 2008-04-26 16:17 腐蚀与膨胀\Release\DSplit.bsc
文件 15854 2008-04-26 16:17 腐蚀与膨胀\Release\DSplit.obj
............此处省略36个文件信息
- 上一篇:Fluent UDF-马世虎翻译版.zip
- 下一篇:基于51单片机汽车尾灯设计论文
评论
共有 条评论