vc实现查找8位位图中的杂质.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
vc实现查找8位位图中的杂质

第二题 第一部分:代码 #includewindows.h #includeiostream #includefstream #include iomanip using namespace std; ///////////////////////////////////////////////// //定义类 class CBmp { public: //读图像文件信息 bool ReadInfo(char FilePath[]); //写图像灰度信息到文本文件 bool Createbmp(char FilePath[],char szFileName[] ); //生成bmp文件 CBmp();//构造函数 virtual ~CBmp();//析构函数 private: BITMAPFILEHEADER m_sBMFH; //位图文件头 BITMAPINFOHEADER m_sBMIH; //位图信息头 RGBQUAD * m_pPalette; //调色板 BYTE * m_pBData; //位图数据 }; //////////////////////////// CBmp::CBmp() { m_pPalette = NULL; m_pBData = NULL; } CBmp::~CBmp() { if(m_pPalette!=NULL) { delete [] m_pPalette; m_pPalette = NULL; } if(m_pBData!=NULL) { delete [] m_pBData; m_pBData = NULL; } } ////////////////////////////////////////// //读图像文件 bool CBmp::ReadInfo(char FilePath[]) { int nSize; //用来记录调色板的大小 ifstream fin;//打开文件 fin.open(FilePath,ios::binary); if(!fin) { cerrOpen file error!endl; return false; } //读取文件头 fin.read((char *)(m_sBMFH),sizeof(BITMAPFILEHEADER)); // 判断是否BMP格式 if(m_sBMFH.bfType!=0x4d42) { cout该文件不是BMP格式的文件!endl; return false; } //读取文件信息头 fin.read((char *)(m_sBMIH),sizeof(BITMAPINFOHEADER)); //计算调色板的大小 nSize = m_sBMFH.bfOffBits - sizeof(BITMAPFILEHEADER) - sizeof(BITMAPINFOHEADER); if(nSize!=0) { //读取调色板 m_pPalette = new RGBQUAD [nSize/4]; fin.read((char *)(m_pPalette),nSize); } //读取图像数据 m_pBData = new BYTE [m_sBMIH.biSizeImage]; fin.read((char *)(m_pBData),m_sBMIH.biSizeImage); fin.close(); return true; } ////////////////////////////////////// //写图像灰度信息到文本文件 bool CBmp::Createbmp(char FilePath[],char szFileName[]) { // 选用的灰度转换公式不同,所得的结果基本上是一致的,但是会稍有差别。 // Gray = (R*38 + G*75 + B*15) 7; //高精度转灰度公式 // Gray = R*0.299 + G*0.587 + B*0.114 //使用浮点计算,速度较慢 BYTE *pt; int t=0; int d=0; ifstream fin; fin.open(FilePath,ios::binary); if(!fin) { cerrOpen file error!endl; return false; } if(m_sBMIH.biWidth*1%4!=0) t=4-m_sBMIH.biWidth*1%4; //位图数据要求每行字节数必须是4的倍数,不足补齐t ////////

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档