- 1、本文档共8页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VC开发灰度位图处理
Visual C++6.0开发灰度位图处理
9/10/2001 9:41:14·
图像处理技术已经类生活的各个领域并得到越来越多的应用,图像处理所涉及的图像格式有很多种,如TIF、JEMP、BMP等等,工程应用中经常要处理256级的灰度BMP图像,如通过黑白采集卡采集得到的图像。BMP灰度图像作为Windows环境下主要的图像格式之一,以其格式简单,适应性强而倍受欢迎。在进行图像处理时,操作图像中的像素值就要得到图像阵列;经过处理后的图像的像素值存储起来;显示图像时要正确实现调色板,结合这些问题,文章针对性的给出了操作灰度BMP图像时的部分函数实现代码及注释。 一、 BMP位图操作 BMP位图包括位图文件头结构BITMAPFILEHEADER、位图信息头结构BITMAPINFOHEADER、位图颜色表RGBQUAD和位图像素数据四部分。处理位图时要根据文件的这些结构得到位图文件大小、位图的宽、高、实现调色板、得到位图像素值等等。对于256级灰度图像每个像素用8bit表示颜色的索引值,这里要注意的一点是在BMP位图中,位图的每行像素值要填充到一个四字节边界,即位图每行所占的存储长度为四字节的倍数,不足时将多余位用0填充。 在处理图像应用程序的文档类(CdibDoc.h)中声明如下宏及公有变量: #define WIDTHBYTES(bits) (((bits) + 31) / 32 * 4)//计算图像每行象素所占的字节数目 HANDLE m_hDIB;//存放位图数据的句柄 CPalette* m_palDIB;//指向调色板Cpalette类的指针 CSize m_sizeDoc; file://初始化视图的尺寸 1、 读取灰度BMP位图 根据BMP位图文件的结构,操作BMP位图文件读入数据,重载了文挡类的OnOpenDocument函数如下:
BOOL CDibDoc::OnOpenDocument(LPCTSTR lpszPathName){ CFile file; CFileException fe; if (!file.Open(lpszPathName, CFile::modeRead | CFile::shareDenyWrite, fe)) { AfxMessageBox(文件打不开); return FALSE; }//打开文件 DeleteContents();//删除文挡 BeginWaitCursor(); BITMAPFILEHEADER bmfHeader;//定义位图文件头结构 DWORD dwBitsSize; HANDLE hDIB; LPSTR pDIB; BITMAPINFOHEADER *bmhdr;//指向位图信息头结构的指针 dwBitsSize = file.GetLength();//得到文件长度 if (file.Read((LPSTR)bmfHeader, sizeof(bmfHeader)) != sizeof(bmfHeader)) return FALSE; if (bmfHeader.bfType != 0x4d42) file://检查是否为BMP文件 return FALSE; hDIB=(HANDLE) ::GlobalAlloc(GMEM_MOVEABLE | GMEM_ZEROINIT, dwBitsSize); file://申请缓冲区 if (hDIB == 0) { return FALSE; } pDIB = (LPSTR) ::GlobalLock((HGLOBAL)hDIB); file://得到申请的缓冲区的指针 if (file.ReadHuge(pDIB, dwBitsSize - sizeof(BITMAPFILEHEADER)) != dwBitsSize - sizeof(BITMAPFILEHEADER) ) { ::GlobalUnlock((HGLOBAL)hDIB); hDIB=NULL; return FALSE; }//读数据,包括位图信息、位图颜色表、图像像素的灰度值 bmhdr=(BITMAPINFOHEADER*)pDIB;//为指向位图信息头结构的指针付值 ::GlobalUnlock((HGLOBAL)hDIB); if ((*bmhdr).biBitCount!=8) file://验证是否为8bit位图 ret
您可能关注的文档
- vc实现查找8位位图中的杂质.doc
- 论生态文明的理念发展和实践.doc
- FLASH AS3优化.doc
- 2009学术榜论文.doc
- 中美文化代表.doc
- GRE 写作清单 ISSUE+ARGUMENT.doc
- 绘制灰度直方图 源代码.docx
- VC将指定区域保存为图片.doc
- 基于QtWebkit的嵌入式bs架构设计.doc
- 用vc++创建直方图详解.doc
- 2022年临沂市继续教育专业课-人力资源开发与管理试题及答案汇总.pdf
- 2020年必威体育精装版七年级上册道德与法治知识点总结 .pdf
- 2022-2023年公共营养师《四级营养师》预测试题3(答案解析) .pdf
- 2022-2023九年级第四次模拟考试 (物理)(含答案解析)010116 .pdf
- 2015-2016第一学期汽车电器题库(修改)) .pdf
- 2020年全国中小学生安全知识竞赛试题库及答案(共150题) .pdf
- 2014-2015年九年级语文期末考试试题及答案 .pdf
- 2020年黑龙江省绥化市中考地理试题(解析版) .pdf
- 2022-2023学年北师大版七年级数学上册《有理数的混合运算》期末复习计算.pdf
- 2022—2023年人教版八年级物理下册期末试卷(及参考答案) .pdf
文档评论(0)