资源简介

图像分割是由图像处理到图像分析的关键步骤,涉及到计算机视觉技术的复杂问题

资源截图

代码片段和文件信息

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

评论

共有 条评论