欢迎来到天天文库
浏览记录
ID:51588435
大小:73.50 KB
页数:15页
时间:2020-03-24
《VC数字图像处理编程入门.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、VC数字图像处理编程入门2005.9.28VC开发环境简介VC编程需要的知识C/C++语言;对Windows操作系统的了解(底层编程);微软类库MFC(MicrosoftFoundationClass)VisualC++是一个可视化集成开发环境掌握‘工程’的概念菜单使用介绍、Debug/Release区别等等VC开发的两种方式(一)SDK(softwaredevelopmentkit)方式又称WIN32API(应用程序接口)编程即直接调用32位Windows(WIN32)操作系统提供的接口函数进
2、行编程。SDK编程(VC中)使用的语言是C语言。适合底层编程和对速度要求较高的环境,比如游戏开发、驱动开发、数字图形等看图像打开、高斯噪声绘制的例子VC开发的两种方式(二)MFC方式又称类库编程,即程序主要不再直接跟操作系统API打交道(在需要的时候也可以调用API),而是使用封装好的C++类库。MFC编程的好处之一:可以使用MFC向导来生成程序框架,提高效率在这堂课中后面讲的程序都是MFC程序VC练习一TC编写的‘hello,world’程序在VC中编译的方法初步确立‘工程’的概念双击打开C源程序
3、形成工程的方法;先建立工程,再逐步添加C源程序的方法初步讲解VC调试技术(步进/变量监视)注意在这个程序中C和C++的部分区别VC练习二学习使用VC中的程序建立向导来建立一个程序框架学习建立一个菜单、工具栏并弹出对话框显示Hello,World!图像编程基础位图、三基色与混色、调色板的概念有一个长宽各为200个象素,颜色数为16色的彩色图,每一个象素都用R,G,B三个分量表示,因为每个分量有256个级别,要用8位即一个字节来表示,所以每个象素需要用3个字节。整个图象要用200*200*3,约120k字
4、节。这幅图中最多只有16种颜色,我们可以用一个表:表中的每一行记录一种颜色的R,G,B值。这样当我们表示一个象素的颜色时,只需要指出该颜色是在第几行,即该颜色在表中的索引值。举个例子,如果表的第0行为255,0,0(红色),那么当某个象素为红色时,只需要标明0即可。再来计算一下:16种状态可以用4位表示,所以一个象素要用半个字节。整个图象要用200*200*0.5,约20k字节,再加上表占用的字节为3*16=48字节.整个占用的字节数约为前面的1/6!Windows位图结构位图文件头的结构第一部分为位图
5、文件头BITMAPFILEHEADER,是一个结构,其定义如下:typedefstructtagBITMAPFILEHEADER{WORDbfType;DWORDbfSize;指定文件大小(包括这14个字节)WORDbfReserved1;WORDbfReserved2;DWORDbfOffBits;(从文件头到数据区的偏移量)}BITMAPFILEHEADER;这个结构的长度是固定的,为14个字节(WORD为无符号16位整数,DWORD为无符号32位整数)位图信息头的结构第二部分为位图信息头BITMA
6、PINFOHEADER,其主要字段如下:typedefstructtagBITMAPINFOHEADER{DWORDbiSize;指定这个结构的长度,为40LONGbiWidth;指定图象的宽度,单位是象素LONGbiHeight;WORDbiBitCount;颜色的位数,一般为1、4、8、24DWORDbiSizeImage;}BITMAPINFOHEADER;这个结构的长度是固定的,为40个字节(WORD为无符号16位整数,DWORD无符号32位整数,LONG为32位整数)biSizeImage字段
7、biSizeImage指定实际的位图数据占用的字节数,其实也可以从以下的公式中计算出来:biSizeImage=biWidth‘*biHeight要注意的是:上述公式中的biWidth‘必须是4的整倍数(所以不是biWidth,而是biWidth‘,表示大于或等于biWidth的,离4最近的整倍数。举个例子,如果biWidth=240,则biWidth‘=240;如果biWidth=241,biWidth‘=244)一定要注意:每行所占字节长度始终是4的倍数,或者每行所占位长度是32的倍数。如果不是,则
8、需要补齐调色板调色板实际上是一个四元数组,则有2的iBitCount次方个元素)。数组中每个元素的类型是一个RGBQUAD结构,占4个字节.typedefstructtagRGBQUAD{BYTErgbBlue;//蓝色分量BYTErgbGreen;//绿色分量BYTErgbRed;//红色分量BYTErgbReserved;//保留值}RGBQUAD;注意:24位真彩色图中没有调色板数据实际的位图数据区第四部分就是实际的图象数据了。对于用
此文档下载收益归作者所有