资源简介
图像分割是由图像处理到图像分析的关键步骤,涉及到计算机视觉技术的复杂问题
代码片段和文件信息
//-----------------------------------------//
// “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个文件信息
- 上一篇:各种常用的元胞自动机模型
- 下一篇:数字通信知识点归纳与习题分析
相关资源
- SVM在RGB图像分割中的应用
- 论文研究-基于图像分析的施工场景安
- Mean_Shift 算法图像分割
- 《图像分割--canny算子》超详细PPT,适
- 图像分割方法综述的文献
- 图像分割效果评价
- 区域生长和水平集相融合的肺部CT图像
- 图像分割中的马尔可夫随机场方法综
- 图像分割算法系统
- 模糊c均值法分割图像
- 数字图像处理 gui界面实现图像分割
- 超像素分割软件可调整分割输出数目
- NcutClustering图像分割算法
- 用kmeans得到二值分割后,再用svm进行
- 多层自动确定类别的谱聚类算法
- 图像分割算法的研究与实现_开题报告
- 区域生长的图像分割程序
- 快速K-均值(kmeans)聚类图像分割算法
- 区域生长方法对肝脏CT图像的提取方法
- 基于FCM(模糊C均值聚类)的灰度图像
- 基于K-means聚类的图像分割
- 谱聚类算法对图像进行分割
- ncut图像分割
- 边缘检测图像边缘检测
- 基于小波变换的彩色图像分割
- OpenCV基于分水岭图像分割算法
- meanshift图像分割代码
- Graphcut-源码及实现
- 利用基于直方图的自适应阈值方法实
- 基于改进PSO算法的最大熵阈值图像分
评论
共有 条评论