資源簡介
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個文件信息
評論
共有 條評論