資源簡介
圖像分割是由圖像處理到圖像分析的關鍵步驟,涉及到計算機視覺技術的復雜問題

代碼片段和文件信息
//-----------------------------------------//????
//?“Dib.h“:??設備無關位圖(DIB)類實現?
//?Author?:??Happynp
//?EMail??:??happy_np@163.com
//?Date???:??7.24.2007
//-----------------------------------------//
#include?“stdafx.h“
#include?“Dib.h“
CDib::CDib()
{
m_pFileHeader?=?NULL;
m_pInfoHeader?=?NULL;
????m_pData???????=?NULL;
}
CDib::~CDib()
{
????if(!IsEmpty())
{
???if(m_pFileHeader) delete??[]m_pFileHeader;
???if(m_pInfoHeader)????delete??[]m_pInfoHeader;
???if(m_pData)??????????delete??[]m_pData;
}
}
BOOL?CDib::IsEmpty()?????????????????//?判斷位圖是否為空
{
if(m_pInfoHeader?==?NULL?&&?m_pData?==?NULL)
return?TRUE;
else?
return?FALSE;
}
WORD?CDib::GetDibPalEntryNum()???????????????????//取得位圖的調色板索引項數
{
????if(m_pInfoHeader->biClrUsed)
????{
????????return?(WORD)m_pInfoHeader->biClrUsed;
????}
????switch(m_pInfoHeader->biBitCount)
????{
????case?1:????????????????//2色
????????return?2;
????case?4:????????????????//16色
????????return?16;
????case?8:????????????????//156色
????????return?256;
case?16:
case?24:
case?32:
return?0;??????????//沒有調色板
????default:???????????????
????????return?-1;?????????//error
????}
}
BOOL??CDib::ReadDibFile(CFile?*pFile)????????????//讀取位圖文件
{??
UINT??t_nCount?t_nSize;
//?進行讀操作
try?
{
m_pFileHeader?=?(LPBITMAPFILEHEADER)new?unsigned?char[sizeof(BITMAPFILEHEADER)];
//?讀取文件頭
t_nCount?=?pFile->Read((LPVOID)m_pFileHeader?sizeof(BITMAPFILEHEADER));?
//?如果讀出的長度不對,則返回并進行相應錯誤處理
if(t_nCount?!=?sizeof(BITMAPFILEHEADER))?
{
throw?new?CException;
}
//?如果文件類型不為“BM“,則返回并進行相應錯誤處理
if(m_pFileHeader->bfType?!=?DIB_HEADER_MARKER)??//?‘BM‘
{
throw?new?CException;
}
//?計算信息頭加上調色板的大小,并分配相應的內存
t_nSize?=?m_pFileHeader->bfOffBits?-?sizeof(BITMAPFILEHEADER);
m_pInfoHeader?=?(LPBITMAPINFOHEADER)new?unsigned?char[t_nSize];
//?讀取信息頭和調色板
t_nCount?=?pFile->Read(m_pInfoHeader?t_nSize);
//?分配圖象數據內存,并從文件中讀取圖象數據
m_pData?=?(LPBYTE)?new?unsigned?char[m_pInfoHeader->biSizeImage];
t_nCount?=?pFile->Read(m_pData?m_pInfoHeader->biSizeImage);?
}
//?錯誤處理
catch(CException*?pe)?
{
AfxMessageBox(“Read?error“);
pe->Delete();
return?FALSE;
}
//?返回
return?TRUE;
}
BOOL??CDib::SaveDibFile(CFile*?pFile)????????//保存位圖
{
ASSERT(m_pInfoHeader!=?NULL?&&?m_pData!=?NULL);????//?斷言位圖不空
BITMAPFILEHEADER??t_bmFileHeader;
//?設置文件頭中文件類型為“BM“
t_bmFileHeader.bfType?=?0x4d42;??
WORD?t_wPaletteCount?=?GetDibPalEntryNum();
//?計算信息頭和調色板的大小尺寸
int?t_nSizeHdr?=?sizeof(BITMAPINFOHEADER)?+?sizeof(RGBQUAD)*t_wPaletteCount;
//?設置文件頭信息
t_bmFileHeader.bfSize?=?sizeof(BITMAPFILEHEADER)?+?t_nSizeHdr?+?m_pInfoHeader->biSizeImage;
t_bmFileHeader.bfReserved1?=?0;?
t_bmFileHeader.bfReserved2?=?0;
t_bmFileHeader.bfOffBits?=?sizeof(BITMAPFILEHEADER)?+?sizeof(BITMAPINFOHEADER)
?????????????????+?sizeof(RGBQUAD)*t_wPaletteCount;
//?進行寫操作
try?
{
pFile->Write((LPVOID)&t_bmFileHe
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????60830??2007-10-13?13:54??GVF_Snake?10.13\gvfsnake.bmp
?????文件??????????0??2007-10-10?18:10??GVF_Snake?10.13\~VC41F.tmp
?????文件??????12776??2007-10-17?15:33??GVF_Snake?10.13\GVF_Snake.rc
?????文件??????????0??2007-10-14?22:02??GVF_Snake?10.13\~VC467.tmp
?????文件????????152??2007-10-06?16:56??GVF_Snake?10.13\GradVector.h
?????文件???????7433??2007-10-09?11:41??GVF_Snake?10.13\Matrix.h
?????文件??????31216??2007-10-17?15:43??GVF_Snake?10.13\GVF_Snake.aps
?????文件??????60832??2007-10-13?13:52??GVF_Snake?10.13\gvfsnake5_31.BMP
?????文件??????????0??2007-10-18?17:11??GVF_Snake?10.13\fu.txt
?????文件???????1935??2007-10-17?16:15??GVF_Snake?10.13\gradShowDlg.h
?????文件??????73405??2007-07-07?15:14??GVF_Snake?10.13\Matrix.cpp
?????文件???????5076??2007-10-10?21:48??GVF_Snake?10.13\GVF_Snake.dsp
?????文件???????1431??2007-10-17?15:43??GVF_Snake?10.13\Resource.h
?????文件??????????0??2007-10-18?17:11??GVF_Snake?10.13\fv.txt
?????文件?????220160??2007-10-22?08:50??GVF_Snake?10.13\GVF_Snake.opt
?????文件???????4383??2007-10-05?12:19??GVF_Snake?10.13\ReadMe.txt
?????文件???????1389??2007-10-05?12:19??GVF_Snake?10.13\GVF_Snake.h
?????文件???????4263??2007-10-05?12:19??GVF_Snake?10.13\GVF_Snake.cpp
?????文件???????1054??2007-10-05?12:19??GVF_Snake?10.13\StdAfx.h
?????文件????????211??2007-10-05?12:19??GVF_Snake?10.13\StdAfx.cpp
?????文件????????524??2007-10-05?12:19??GVF_Snake?10.13\GVF_Snake.dsw
?????文件???????4063??2007-08-31?08:57??GVF_Snake?10.13\Dib.cpp
?????文件???????1104??2007-10-05?12:26??GVF_Snake?10.13\Dib.h
?????文件???????1331??2007-10-22?08:50??GVF_Snake?10.13\GVF_Snake.plg
?????文件???????1568??2007-10-05?12:29??GVF_Snake?10.13\GVF_SnakeDoc.h
?????文件???????1918??2007-10-05?12:29??GVF_Snake?10.13\GVF_SnakeDoc.cpp
?????文件???????2368??2007-10-05?13:13??GVF_Snake?10.13\MainFrm.cpp
?????文件???????1440??2007-10-05?13:13??GVF_Snake?10.13\MainFrm.h
?????文件?????156672??2007-10-22?08:50??GVF_Snake?10.13\GVF_Snake.ncb
?????文件???????2924??2007-10-22?08:50??GVF_Snake?10.13\GVF_Snake.clw
............此處省略13個文件信息
- 上一篇:各種常用的元胞自動機模型
- 下一篇:數字通信知識點歸納與習題分析
評論
共有 條評論