- 1、本文档共6页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
////////
您可能关注的文档
- arcview专题地图制作(数据显示与地图制图).doc
- 与设备无关的位图.docx
- 专业名词(部分).doc
- pd基本操作.doc
- 托福培训丨托福阅读之小代词,大应用.doc
- 实验一 图像文件的读取和显示.doc
- Task2ClonePracticeTask2015(PS专业教学).docx
- EAT说明书.doc
- NX8.0模板定制指南.doc
- Oracle ERP 界面开发(form).docx
- 北师大版小学数学三年级上册《寄书》教学设计.docx
- 统编版(部编版)语文二年级上册《雪孩子》教学设计.docx
- 统编版(部编版)语文二年级上册《八角楼上》教学设计.docx
- 北师大版小学数学三年级上册《长方形周长》教学设计.docx
- 北师大版小学数学三年级上册《丰收了》教学设计.docx
- 统编版(部编版)语文二年级上册《夜宿山寺》教学设计.docx
- 统编版(部编版)语文二年级上册《风娃娃》教学设计.docx
- 统编版(部编版)语文二年级上册《朱德的扁担》教学设计.docx
- 统编版(部编版)语文二年级上册《难忘的泼水节》教学设计.docx
- 统编版(部编版)语文二年级上册《纸船和风筝》教学设计.docx
文档评论(0)