• 大小: 2.36MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-16
  • 语言: C/C++
  • 标签: 腐蚀  膨胀  

资源简介

这是数学形态学中腐蚀与膨胀的源代码,有需要的朋友请放心下载。

资源截图

代码片段和文件信息

#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个文件信息

评论

共有 条评论