数字图像学

  • O5_143133
    了解作者
  • 108.9KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-06-13 10:04
    上传日期
个人从互联网上搜集的图像处理头文件,DibObject.cpp, DibObject.h, ImageError.h,ImageLoad.dll, Imageload.h, ImageLoad.lib 等文件
数字图像学.zip
  • 数字图像学
  • ImageLoad.lib
    15.2KB
  • DibObject.cpp
    49.6KB
  • DibObject.h
    6.1KB
  • ImageLoad.dll
    183KB
  • Imageload.h
    3.9KB
  • ImageErrors.h
    832B
内容介绍
//DibObject.cpp #include "stdafx.h" #include "DibObject.h" IMPLEMENT_DYNCREATE(CDibObject, CObject) char *CDibObject::szExtensions[] = { ".BMP", ".GIF", ".PCX", ".TGA", ".JPG", ".TIF", "" }; //Diagnostics and dump member functions, overridden #ifdef _DEBUG void CDibObject::Dump(CDumpContext &dc) const { //call base class function first CObject::Dump(dc); //now do the stuff for our specific class dc<<"File Name:"<<m_pszFilename<<"\n"; } #endif #ifdef _DEBUG void CDibObject::AssertValid() const { //call inherited AssertValid first CObject::AssertValid(); //check CDibObject members... ASSERT(m_pszFilename != NULL); //must exist ASSERT(m_hDib != NULL); //must exist } #endif //////////////////////////////////////////////////////////////////////// //CDibObject类的构造函数 //---------------------------------------------------------------------- //基本功能:这是一个无参数的构造函数。它简单地创建一个CDibObject对象并 // 初始化其内部变量。 //---------------------------------------------------------------------- //参数说明:无 //---------------------------------------------------------------------- //返 回 值:无 //////////////////////////////////////////////////////////////////////// CDibObject::CDibObject() { //调用辅助函数初始化其内部变量。 InitVars(); } //////////////////////////////////////////////////////////////////////// //CDibObject类的构造函数 //---------------------------------------------------------------------- //基本功能:用一个CDibObject对象通过复制操作来创建一个CDibObject对象。 //---------------------------------------------------------------------- //参数说明:CDibObject *pDibObject //---------------------------------------------------------------------- //返 回 值:无 //////////////////////////////////////////////////////////////////////// CDibObject::CDibObject(CDibObject *pDibObject) { InitVars(); KillImage(); m_nWidth = pDibObject->m_nWidth; m_nHeight = pDibObject->m_nHeight; m_nPlanes = pDibObject->m_nPlanes; m_nBits = pDibObject->m_nBits; m_nColors = pDibObject->m_nColors; m_nImageType = pDibObject->m_nImageType; m_nX = pDibObject->m_nX; m_nY = pDibObject->m_nY; m_nLastError = pDibObject->m_nLastError; m_nScreenPlanes = pDibObject->m_nScreenPlanes; m_nScreenBits = pDibObject->m_nScreenBits; m_nPaletteBytes = pDibObject->m_nPaletteBytes; m_nQuality = pDibObject->m_nQuality; m_nPaletteCreationType = pDibObject->m_nPaletteCreationType; int nNumColors = m_nColors; int nWidthBytes = WidthBytes( m_nBits, m_nWidth ); if( pDibObject->m_hDib != NULL ) { DWORD dwSize = ::GlobalSize( pDibObject->m_hDib ); char *pData = (char *) ::GlobalLock( pDibObject->m_hDib ); if( pData != NULL ) { HGLOBAL hGlobal = ::GlobalAlloc( GMEM_MOVEABLE | GMEM_ZEROINIT, dwSize ); if( hGlobal != NULL ){ char *pDestData = (char *) ::GlobalLock( hGlobal ); if( pDestData != NULL ) { memcpy( pDestData, pData, dwSize ); ::GlobalUnlock( hGlobal ); m_hDib = hGlobal; } else ::GlobalFree( hGlobal ); } ::GlobalUnlock( pDibObject->m_hDib ); } } } //////////////////////////////////////////////////////////////////////// //CDibObject类的构造函数 //---------------------------------------------------------------------- //基本功能:构造一个CDibObject对象。唯一的要求的一个参数是文件名。如果 // 给出了CDC设备上下文参数,图像加载后会立即在该设备上下文中显示 // 出来。如果给出了nX或nY参数,图像会显示在该坐标指定的位置,否 // 则,图像总是显示在坐标为(0, 0)的位置。 //---------------------------------------------------------------------- //参数说明:const char *pszFilename // CDC *pDC,默认为NULL // int nX,默认为-1 // int nY,默认为-1 //---------------------------------------------------------------------- //////////////////////////////////////////////////////////////////////// CDibObject::CDibObject( const char *pszFilename, CDC *pDC, int nX, int nY ) { InitVars(); Load( pszFilename, pDC, nX, nY ); } //////////////////////////////////////////////////////////////////////// //CDibObject类的析构函数 //---------------------------------------------------------------------- //基本功能:析构CDibObject对象,删除该对象中的图像及相应的变量 //---------------------------------------------------------------------- //参数说明:无 //////////////////////////////////////////////////////////////////////// CDibObject::~CDibObject() { if( m_hDib ) ::GlobalFree( m_hDib ); if( m_pszFilename != NULL ) delete [] m_pszFilename; if( m_pLogPal != NULL ) delete [] m_pLogPal; } //////////////////////////////////////////////////////////////////////// //InitVars()函数 //---------------------------------------------------------------------- //基本功能:初始化CDibObject类内部变量 //---------------------------------------------------------------------- //参数说明:BOOL bFlag 标记类中是否有图像打开,默认值为FALSE //////////////////////////////////////////////////////////////////////// void CDibObject::InitVars( BOOL bFlag ) { m_nWidth = m_nHeight = m_nBits = m_nColors = m_nImageType = 0; m_nX = m_nY = 0; m_nLastError = 0; m_hDib = NULL; m_nPaletteCreationType = FIXED_PALETTE; if( !bFlag ) { m_pszFilename = NULL; m_pLogPal = NULL; } m_nQuality = 50; } //////////////////////////////////////////////////////////////////////// //BOOL Load() //---------------------------------------------------------------------- //基本功能:本函数把一个图像文件载入CDibObject类。必需的一个参数是文件 // 名。如果给出了CDC设备上下文参数,图像一加载就被绘制。如果给 // 出了nX或nY参数,图像将显示在该坐标指定的位置。否则,图像总是 // 显示在坐标为(0,0)的位置。 //---------------------------------------------------------------------- //参数说明:const char *pszFilename // CDC *pDC,默认为NULL // int nX,默认为-1 // int nY,默认为-1 //---------------------------------------------------------------------- //返 回 值:BOOL:成功返回TRUE,失败返回FALSE //////////////////////////////////////////////////////////////////////// BOOL CDibObject::Load( const char *pszFilename, CDC *pDC, int nX, int nY ) { //获取图像文件类型 m_nImageType = FileType( pszFilename ); if( m_nImageType == 0 ) { m_nLastError = IMAGELIB_UNSUPPORTED_FILETYPE; return( FALSE ); } //删除已存在的图像 KillImage(); m_pszFilename = new char [strlen(pszFilename)+1]; if( m_pszFilename != NULL ) strcpy( m_pszFilename, pszFilename ); //根据文件类型调用ImageLoad.dll动态链接库中的相应函数打开图像文件 switch( m_nImageType ) { case IMAGETYPE_BMP: m_hDib = ::LoadBMP( pszFilename ); if( m_hDib == NULL ){ m_nLastError = ::GetLastPicLibError(); return( FALSE ); } break; case IMAGETYPE_GIF: m_hDib = ::LoadGIF( pszFilename ); if( m_hDib == NULL ){ m_nLastError = ::GetLastPicLibError(); return( FALSE ); } break; case IMAGETYPE_JPG: m_hDib = ::LoadJPG( pszFilename ); if( m_hDib == NULL ){ m_nLastError = ::GetLastPicLibError(); return( FALSE ); } break; case IMAGETYPE_PCX: m_hDib = ::LoadPCX( pszFilename ); if( m_hDib == NULL ){ m_nLastError = ::GetLastPicLibError(); return( FALSE ); } break; case IMAGETYPE_TGA: m_hDib = ::LoadTGA( pszFilename ); if( m_hDib == NULL ){ m_nLastError = ::GetLastPicLibError(); return( FALSE ); } break; case IMAGETYPE_TIF: m_hDib = ::LoadTIF( pszFilename ); if( m_hDib == NULL ){ m_nLastError = ::GetLastPicLibError(); return( FALSE ); } break; } //处理图像信息头 ProcessImageHeader(); //处理调色板 ProcessPalette(); //若传入了设备上下文指针,就在指定的设备上下文中绘制图像 if( pDC != NULL ) Draw( pDC, nX, nY ); return( TRUE ); } /////////////////////////////////////////////////////////////////////
评论
    相关推荐
    • 图像处理
      基于MATLAB平台的图像处理程序代码资源
    • 数字图像处理
      HSI RGB LZW 哈弗慢编码,直方图均衡化,累计直方图,灰度映射,腐蚀,膨胀(文件内容:图像处理练习.doc 数字图像处理代码.doc)
    • 数字图像处理
      本书是数字图像处理理论与实践相结合的成功之作,强调理论用于解决工业或科学研究中常见的实际问题。这种与基本概念和数字图像处理的各种实用技术,使读者能用这些技术解决数字图像中的新问题。 全书共22章,1-5章...
    • 数字图像处理
      本书全面系统地讲述了数字图像处理领域中的15大核心话题,包括色彩空间、图像编码、频域变换、图像文件格式、几何变换、灰度变换、图像的增强处理、边缘检测、轮廓跟踪、形态学处理、图像分割、图像的加密与隐藏、...
    • 数字图像处理
      数字图像处理宝典,PDF高清版,因每次上传限制,分为7个部分上传,搜索时搜 “数字图像处理(中午版part#)
    • 图像处理
      图像处理
    • 图像处理
      图像处理
    • 图像处理
      图像处理
    • 图像处理
      图像处理
    • 图像处理代码
      这个是图像处理不可多得的源码,是我们做项目时用到的所有技术。涉及到哈夫曼码编码、香农-弗诺编码、伪彩色、滤波、模板匹配 、图像平滑、图像复原、图像显示、特征提取、图像变、运动检测、小波变换、图像分割等...