• 大小: 19.06MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-06-30
  • 语言: C/C++
  • 标签: vc++  图像处理  

资源简介

vc++数字图像处理的入门级好书,详细介绍了图像处理的基本知识以及相应的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

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2007-07-03 23:18  第11章24位彩色\
     目录           0  2007-07-03 23:18  第11章24位彩色\color416\
     文件        9955  2003-04-09 17:50  第11章24位彩色\color416\CDIB.CPP
     文件         934  2003-04-09 17:47  第11章24位彩色\color416\Cdib.h
     文件        4900  1998-02-03 11:15  第11章24位彩色\color416\DSPLIT.001
     文件       34676  2007-05-21 08:48  第11章24位彩色\color416\DSplit.aps
     文件        5353  2007-05-21 13:58  第11章24位彩色\color416\DSPLIT.CLW
     文件        4158  2003-04-01 08:51  第11章24位彩色\color416\Dsplit.cpp
     文件        5494  2003-04-04 22:43  第11章24位彩色\color416\DSplit.dsp
     文件         579  1999-01-28 11:36  第11章24位彩色\color416\DSPLIT.DSW
     文件        1366  2003-04-01 08:51  第11章24位彩色\color416\Dsplit.h
     文件      943104  2007-05-21 13:58  第11章24位彩色\color416\DSPLIT.NCB
     文件       77824  2007-05-21 13:58  第11章24位彩色\color416\DSPLIT.OPT
     文件        3552  2007-05-21 13:55  第11章24位彩色\color416\DSPLIT.PLG
     文件       15771  2003-06-14 19:02  第11章24位彩色\color416\DSplit.rc
     文件        1969  2003-04-14 16:00  第11章24位彩色\color416\DSplitDoc.cpp
     文件        1493  2003-04-04 20:25  第11章24位彩色\color416\DSplitDoc.h
     文件        3259  2003-04-14 16:32  第11章24位彩色\color416\Dsplitview.cpp
     文件        1859  2003-04-03 17:18  第11章24位彩色\color416\Dsplitview.h
     文件        6439  1998-03-10 17:18  第11章24位彩色\color416\DYNSPLITTERWND.CPP
     文件        1733  2003-04-03 17:02  第11章24位彩色\color416\DYNSPLITTERWND.H
     文件        9769  2003-04-14 19:31  第11章24位彩色\color416\DynSplitView2.cpp
     文件        2410  2003-04-10 22:43  第11章24位彩色\color416\DynSplitView2.h
     文件         970  2003-04-04 21:03  第11章24位彩色\color416\LightDlg.cpp
     文件        1194  2003-04-04 21:03  第11章24位彩色\color416\LightDlg.h
     文件        3542  2003-04-09 13:20  第11章24位彩色\color416\MAINFRM.CPP
     文件        1687  1998-02-03 11:07  第11章24位彩色\color416\MAINFRM.H
     文件       30217  2004-09-05 10:16  第11章24位彩色\color416\MakeColorDib.cpp
     文件        1010  2004-09-01 09:33  第11章24位彩色\color416\MakeColorDib.h
     文件        1022  2003-04-04 21:21  第11章24位彩色\color416\ontrastDlg.cpp
     文件        1224  2003-04-04 21:21  第11章24位彩色\color416\ontrastDlg.h
............此处省略687个文件信息

评论

共有 条评论