数字图像处理实验指导书模板

合集下载

数字图像处理实验指导书

数字图像处理实验指导书

实验一:图像文件类型转换实验目的:理解数字图像文件的几种基本类型掌握在MATLAB中进行图象文件类型转换的方法观察图象转换前后的效果加深对图象文件类型的理解熟悉图象格式、颜色系统间的转换实验内容:1)灰度图像与索引图像的相互转换2)RGB图像与索引图像的相互转换3)将图像转换为二值化图像实验方法:利用MATLAB工具进行实验一、灰度图像到索引图像的转换启动MATLAB,新建一个自己的工作文件夹(如下图中的“MYFIG”)。

并把它设置在当前的工作路径(Current Directory)下。

1)在该文件夹中拷入个灰度图片,比如“2.jpg”文件。

2)在MATLAB命令输入窗中,调用函数info=imfinfo('2.jpg')观查2.jpg是否为灰度图像在ColorType: 'grayscale' 属性行如此显示,则说明以2.jpg命名的文件为灰度图像。

3)输入如下命令完成转换RGB=imread('2.jpg'); % 将图像“2.jpg”的数据赋给变量RGBfigure(3); % 设定显示窗口3imshow(RGB); % 显示原“2.jpg”文件figure(1); % 设定显示窗口1[RGB1,map1]=gray2ind(RGB,128); % 指定灰度级128,进行灰度图像到索引图像转换imshow(RGB1,map1) ; % 显示索引图像1figure(2); % 设定显示窗口2[RGB2,map2]=gray2ind(RGB,16); % 指定灰度级16,进行灰度图像到索引图像转换imshow(RGB2,map2) ; % 显示索引图像2imwrite(RGB1,map1,'3.bmp'); % 将索引图像1保存为名为“3.bmp”的文件imwrite(RGB2,map2,'4.bmp'); % 将索引图像2 保存为名为“4.bmp”的文件运行并观察结果和现象。

数字图象处理实验指导书

数字图象处理实验指导书

数字图像处理课程实验报告班级学号姓名实验一常用MATLAB图像处理命令一、实验目的1、熟悉并掌握MATLAB工具的使用;2、实现图像的读取、显示、代数运算和简单变换。

二、实验环境MATLAB 6.5以上版本、WIN XP或WIN2000计算机三、常用函数●读写图像文件1、imreadimread函数用于读入各种图像文件,如:a=imread('e:\w01.tif')2、imwriteimwrite函数用于写入图像文件,如:imwrite(a,'e:\w02.tif',‟tif‟)3、imfinfoimfinfo函数用于读取图像文件的有关信息,如:imfinfo('e:\w01.tif')●图像的显示1、imageimage函数是MATLAB提供的最原始的图像显示函数,如:a=[1,2,3,4;4,5,6,7;8,9,10,11,12];image(a);2、imshowimshow函数用于图像文件的显示,如:i=imread('e:\w01.tif');imshow(i);title(…原图像‟)%加上图像标题3、colorbarcolorbar函数用显示图像的颜色条,如:i=imread('e:\w01.tif');imshow(i);colorbar;4、figurefigure函数用于设定图像显示窗口,如:figure(1);/figure(2);5、subplot把图形窗口分成多个矩形部分,每个部分可以分别用来进行显示。

Subplot(m,n,p)分成m*n个小窗口,在第p个窗口中创建坐标轴为当前坐标轴,用于显示图形。

6 、plot绘制二维图形plot(y)Plot(x,y)xy可以是向量、矩阵。

图像类型转换1、rgb2gray把真彩图像转换为灰度图像i=rgb2gray(j)2、im2bw通过阈值化方法把图像转换为二值图像I=im2bw(j,level)Level表示灰度阈值,取值范围0~1(即0.n),表示阈值取自原图像灰度范围的n%3、imresize改变图像的大小I=imresize(j,[m n])将图像j大小调整为m行n列图像运算1、imadd两幅图像相加,要求同样大小,同种数据类型Z=imadd(x,y)表示图像x+y2、imsubtract两幅图像相减,要求同样大小,同种数据类型Z=imsubtract(x,y)表示图像x-y3、immultiplyZ=immultiply(x,y)表示图像x*y4、imdivideZ=imdivide(x,y)表示图像x/y四、实验内容1、读入一幅RGB图像,变换为灰度图像和二值图像,并在同一个窗口内分成三个子窗口来分别显示RGB图像和灰度图像,注上文字标题。

《数字图像处理》实验指导书1

《数字图像处理》实验指导书1

《数字图像处理》实验指导书前言本实验指导书可作为电子信息工程、通信工程、生物医学工程等专业《数字图像处理》课程的实验指导书。

实验指导书共提供了6个实验,要求在VB环境下实现。

实验名称与学时安排详见下表。

实验名称与学时安排表实验教学基本要求:1、在实验前,认真准备,熟悉和掌握相关实验内容的基本算法和程序设计技术。

2、根据实验目的和要求,按时认真完成各实验的上机操作。

3、实验结束后,要及时提交经调试正确的程序源代码、生成的可执行文件、实验报告书等文档。

实验一图象的读取保存及图像的二值化处理一、实验目的1、熟悉《数字图像处理》的实验平台。

2、了解VB对图像进行处理的基本方法。

3、熟悉彩色图像变成灰度图象以及灰度图像转换成二值图像的基本原理及处理过程。

二、实验准备1、复习彩色图像变成灰度图象以及灰度图像的二值化处理的基本原理。

2、阅读下列内容,了解VB对图像进行处理的基本方法。

(1)读取图像通过扫描仪、摄像机等输入计算机以.bmp、.ico或.wmf存储的图像文件,可用LoadPicture函数把图像文件装入窗体、图片框或图像框中,例如:picture1.picture=loadpicture(“c:\image\flower.bmp”)可以把路径为c:\image\flower.bmp的图像文件装入图片框picture1中。

为了使图片框的大小与图像相匹配,应将图片框的autosize属性设置为True。

(2)用Point方法获取彩色图像的颜色值Point方法的功能是获取图像上指定像素的颜色值。

格式为:Object.Point(x,y)其中,Object表示获取颜色的对象名,(x,y)为取得颜色的坐标位置。

Point 方法将指定位置的像素的颜色值返回一个长整形数。

例如,求图片框picture 1中图像在位置(x,y)的像素颜色值(col)时,可写为:dim col as longcol=picture1.Point(x,y)(3)用Pset方法画点Pset方法的功能是在指定的位置画一个指定颜色的点。

《数字图像处理》实验指导书

《数字图像处理》实验指导书

数字图像处理实验指导书电气信息工程系实验中心2008年8月目 录实验一、数字图像获取实验二、图像的傅立叶变换实验三、图像增强实验四、图像压缩实验一、数字图像获取一、实验目的1.掌握使用扫描仪等数字化设备以及计算机获取数字图像的方法;2.修改图像的存储格式。

二、实验仪器1.计算机;2.扫描仪(或数码相机、数字摄像机)及其驱动程序盘;3.图像处理软件(画图,photoshop, Microsoft photo edit等);4.记录用的笔、纸。

三、 实验内容用扫描仪获取图像也是图像的数字化过程的方法之一,扫描仪按种类可以分为手持扫描仪,台式扫描仪和滚筒式扫描仪(鼓形扫描仪)。

扫描仪的主要性能指标有x、y方向的分辨率、色彩分辨率(色彩位数)、扫描幅面和接口方式等。

各类扫描仪都标明了它的光学分辨率和最大分辨率。

分辨率的单位是dpi,dpi是英文Dot Per Inch的缩写,意思是每英寸的像素点数。

扫描仪工作时,首先由光源将光线照在欲输入的图稿上,产生表示图像特征的反射光(反射稿)或透射光(透射稿)。

光学系统采集这些光线,将其聚焦在CCD上,由CCD将光信号转换为电信号,然后由电路部分对这些信号进行A/D转换及处理,产生对应的数字信号输送给计算机。

当机械传动机构在控制电路的控制下,带动装有光学系统和CCD的扫描头与图稿进行相对运动,将图稿全部扫描一遍,一幅完整的图像就输入到计算机中去了。

图1.1扫描仪的工作原理扫描仪扫描图像的步骤是:首先将欲扫描的原稿正面朝下铺在扫描仪的玻璃板上,原稿可以是文字稿件或者图纸照片;然后启动扫描仪驱动程序后,安装在扫描仪内部的可移动光源开始扫描原稿。

为了均匀照亮稿件,扫描仪光源为长条形,并沿y方向扫过整个原稿;照射到原稿上的光线经反射后穿过一个很窄的缝隙,形成沿x方向的光带,又经过一组反光镜,由光学透镜聚焦并进入分光镜,经过棱镜和红绿蓝三色滤色镜得到的RGB三条彩色光带分别照到各自的CCD上,CCD将RGB光带转变为模拟电子信号,此信号又被A/D变换器转变为数字电子信号。

数字图像处理实验指导书_1112(1)学生版

数字图像处理实验指导书_1112(1)学生版

数字图像处理实验指导书上机讲座 (1)实验一数字图像的运算 (2)实验1.1 直方图 (2)实验1.2 3*3均值滤波 (4)实验1.3 3*3中值滤波 (5)实验1.4 图像的缩放 (6)实验1.5 图像旋转 (8)实验二数字图像的离散余弦变换 (9)实验三基于直方图均衡化的图像增强 (15)1.直方图修改处理图像的概念及方法.............................. 错误!未定义书签。

2.直方图均衡化增强图像对比度的MATLAB程序:.... 错误!未定义书签。

实验四图像分割(常见的边缘检测算子——Sobel、Prewitt、Log) .............. 0上机讲座1. 灰度图像的显示(1)256色下显示64级灰度图像调色板设置:R=G=B=I=0 - 63 可显示64级真灰度。

(2)16、24或32位真彩下同理可显示更多灰度级的灰度图像。

(3)Windows 下可显示格式为*.bmp 、*.pcx 、*.jpg 和*.gif 等Windows 能识别并能显示的格式图像。

2. 图像处理用图像数据 (1)无格式图像图像处理中,常使用无格式(不带格式)图像数据。

(2)上机给定无格式图像数据① 人头像:lena.img256×256×8(分辨率/大小:256×256,灰度级:28=256级)。

② 显微医学细胞图像:cell_128.img128×128×8(分辨率/大小:128×128,灰度级:28=256级)。

③ 指纹图像:fing_128.img128×128×8(分辨率/大小:128×128,灰度级:28=256级)。

⎪⎪⎪⎩⎪⎪⎪⎨⎧⎪⎩⎪⎨⎧→→⎪⎩⎪⎨⎧→→→→→⎪⎭⎪⎬⎫⎪⎩⎪⎨⎧−−−−→−打印存盘编辑图文混排下的粘贴打印存盘编辑粘贴编辑下的“画图”下按选择一幅图显示图象word word windows CopyFigure Edit No..Figure No..Figure windows MATLAB 2211 4. MA TLAB 命令简介MATLAB 的命令很多很难记,为了帮助用户找到命令,MA TLAB 通过其广泛的在线帮助功能提供帮助。

数字图像处理实验指导书

数字图像处理实验指导书

《课程名称》实验指导书适用专业:自动化课程代码: 84018091 学时: 6 学分: 0.5 编写单位:机械工程及自动化学院编写人:蒋代君审核人:审批人:目录实验一 Matlab图像处理工具箱的初步练习 .............................................................................................. - 2 - 实验二图像的空域处理方法 ....................................................................................................................... - 5 - 实验三图像的空域处理方法 ....................................................................................................................... - 8 - 实验四图像分割和目标识别 ..................................................................................................................... - 13 -实验一 Matlab图像处理工具箱的初步练习一、实验目的和任务1、初步了解与掌握MATLAB语言的基本用法;2、掌握MA TLAB语言中图象数据与信息的读取方法;3、掌握在MA TLAB语言中图像类型的转换。

二、实验仪器、设备及材料1、计算机2、MatLab软件/语言包括图像处理工具箱(Image Processing Toolbox)3、实验所需要的图片三、实验原理将数字图像的RGB表示转换为YUV表示;Y=0.30R+0.59G+0.11BU=0.70R-0.59G-0.11BV=-0.30R-0.59G+0.89B四、实验步骤1、阅读资料并熟悉MatLab的基本操作2、读取MATLAB中的图象数据3、显示MATLAB中的图象文件。

数字图像处理实验指导书matlab冈萨雷斯

《数字图像处理》实验指导书实验一、空域图像处理一、 实验目的1熟悉CCS 集成开发环境的操作和基本功能;2熟悉MATLAB 基本图像操作;3结合实例学习如何在程序中增加图像处理算法;4理解和掌握图像的线性变换和直方图均衡化的原理和应用;5了解平滑处理的算法和用途,学习使用均值滤波、中值滤波和拉普拉斯锐化进行图像增强处理的程序设计方法;6 了解噪声模型及对图像添加噪声的基本方法。

二、 实验原理1 灰度线性变换就是将图像中所有点的灰度按照线性灰度变换函数进行变换。

)],([),(y x f T y x g =⎪⎩⎪⎨⎧<≤+-<≤+-≤≤=255),(]),([),( ]),([),(0 ),(),(y x f b g b y x f b y x f a g a y x f a y x f y x f y x g b a γβαn y m x ,2,1 ,,,2,1==2 直方图均衡化通过点运算将输入图像转换为在每一级上都有相等像素点数的输出图像。

按照图像概率密度函数PDF 的定义:1,...,2,1,0 )(-==L k n n r p k k r 通过转换公式获得:1,...,2,1,0 )()(00-====∑∑==L k n n r p r T s k j k j j j r k k3 均值(中值)滤波是指在图像上,对待处理的像素给定一个模板,该模板包括了其周围的临近像素。

将模板中的全体像素的均值(中值)来代替原来像素值的方法。

4 拉普拉斯算子如下:⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--------111181111 拉普拉斯算子首先将自身与周围的8个像素相减,表示自身与周围像素的差异,再将这个差异加上自身作为新像素的灰度。

三、实验步骤1 启动MA TLAB程序,对图像文件分别进行灰度线性变换、直方图均衡化、均值滤波、中值滤波和拉普拉斯锐化操作;添加噪声,重复上述过程观察处理结果。

2 记录和整理实验报告四、实验仪器1计算机;2 MA TLAB程序;3记录用的笔、纸。

数字图像处理实验指导书

数字图像处理实验指导书臧兰云电子工程学院实验一图像基本运算一、实验目的:1、了解数字图像处理基础2、掌握数字图像处理的基本运算方法3、学习利用matlab进行数字图像处理的基本方法二、实验内容:1、根据图像采样原理,试对lena图像分别进行4和16倍减采样,查看其减采样效果。

2、对一幅图像加入椒盐噪声,并通过减法运算提取出噪声。

3、两幅二值图像进行逻辑与、或、非运算。

4、实现把一幅图像旋转45°,并分别采用把转出显示区域的图像截去和扩大显示区域范围以显示图像的全部两种方式。

5、选取一幅大小为256*256像素的图像,分别将图比例放大1.5倍,比例缩小0.7倍,非比例放大到420*384像素,非比例缩小到150*180像素。

三、思考与总结:1、将一幅图像如果进行4倍、16倍和64倍增采样会出现什么情况?是否有其他方法可以实现图像的采样?2、图像的选转会导致图像的失真吗?若有,有什么办法可以解决这个问题?3、由非比例缩放得到的图片能够恢复到原图片吗?为什么?实验二图像变换及增强一、实验目的:1、掌握图像变换的应用2、掌握数字图像处理的空间域及频域的增强方法二、实验内容:1、构造一幅图像并对其旋转一定的角度,求原始图像及旋转后图像的频谱图。

2、对一幅灰度图像进行均衡化,灰度等级为8级。

3、对一幅灰度图像采用多种方法实现平滑、锐化滤波。

4、对一幅图像进行幂次变换。

三、思考与总结:1、图像变换在图像处理中的应用?2、什么是傅里叶变换的旋转性?3、以上实验分别可以应用到那些实际问题中? 实验三图像压缩编码一、实验目的:1、掌握图像压缩编码的概念2、比较图像压缩编码的各种方法二、实验内容:1、计算一幅灰度图像的熵。

2、选择一种方法对图像进行压缩,并计算压缩比。

三、思考与总结:1、注释程序功能2、以上实验可以应用到那些实际问题中?实验四图像分割及彩色图像处理一、实验目的:1、掌握图像分割的基本原理2、掌握彩色图像处理方法二、实验内容:1、用全局阈值法对图像进行分割2、实现sobel算子及Roberts等算子的边缘提取算法3、生成一幅大小为256*256的RGB图像。

数字图像处实验指导书_openCV版

图 1 示例图
4
实验二 点处理
一、实验目的 掌握灰度直方图分析图像的灰度分布。 掌握常用的点处理方法和原理,调解灰度变换参数
二、实验内容 1.直方图均衡化
#include "stdafx.h" #include "cv.h" #include "cxcore.h" #include "highgui.h" int main( int argc, char** argv ) {
return 0;
}
return -1;
}
4.一个简单的图像处理例子,求图像的边界。
#include "stdafx.h"
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
int main( int argc, char** argv )
{ //声明 IplImage 指针
IplImage* pImg = NULL;
IplImage* pCannray
if((pImg = cvLoadImage("c:\\lena.jpg", 0)) != 0 )
{ //为 canny 边缘图像申请空间
pCannyImg = cvCreateImage(cvGetSize(pImg),
5%E4%B8%8E%E9%85%8D%E7%BD%AEOpenCV1.0 2. 利用 OpenCV 读入一个图像文件,并将其显示到屏幕上
#include "stdafx.h"
#include "cv.h"

数字图像处理试验指导书

数字图像处理实验报告目录实验一MATLAB数字图像处理初步 (1)实验二图像的代数运算 (7)实验三图像增强—灰度变换 (15)实验四图像增强—直方图变换 (17)实验五图像增强—空域滤波 (20)实验六图像的傅立叶变换 (23)实验七图像增强—频域滤波 (26)实验八彩色图像处理 (29)实验九图像分割 (33)实验十形态学运算 (36)附录MATLAB简介 (39)实验一 MATLAB数字图像处理初步一、实验目的与要求1.熟悉及掌握在MATLAB中能够处理哪些格式图像。

2.熟练掌握在MATLAB中如何读取图像。

3.掌握如何利用MATLAB来获取图像的大小、颜色、高度、宽度等等相关信息。

4.掌握如何在MATLAB中按照指定要求存储一幅图像的方法。

5.图像间如何转化。

二、实验原理1、数字图像的表示和类别一幅图像可以被定义为一个二维函数f(x,y),其中x和y是空间(平面)坐标,f 在任何坐标处(x,y)处的振幅称为图像在该点的亮度。

灰度是用来表示黑白图像亮度的一个术语,而彩色图像是由单个二维图像组合形成的。

例如,在RGB彩色系统中,一幅彩色图像是由三幅独立的分量图像(红、绿、蓝)组成的。

因此,许多为黑白图像处理开发的技术适用于彩色图像处理,方法是分别处理三副独立的分量图像即可。

图像关于x和y坐标以及振幅连续。

要将这样的一幅图像转化为数字形式,就要求数字化坐标和振幅。

将坐标值数字化成为取样;将振幅数字化成为量化。

采样和量化的过程如图1所示。

因此,当f的x、y分量和振幅都是有限且离散的量时,称该图像为数字图像。

作为MATLAB基本数据类型的数值数组本身十分适于表达图像,矩阵的元素和图像的像素之间有着十分自然的对应关系。

图1 图像的采样和量化根据图像数据矩阵解释方法的不同,MA TLAB把其处理为4类: 亮度图像(Intensity images)二值图像(Binary images)索引图像(Indexed images)RGB图像(RGB images)(1) 亮度图像一幅亮度图像是一个数据矩阵,其归一化的取值表示亮度。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数字图像处理》实验指导书编写: 罗建军海南大学三亚学院10月目录一、概述 ....................................................................... 错误!未定义书签。

二、建立程序框架 ....................................................... 错误!未定义书签。

三、建立图像类 ........................................................... 错误!未定义书签。

四、定义图像文档实现图像读/写.............................. 错误!未定义书签。

五、实现图像显示 ....................................................... 错误!未定义书签。

六、建立图像处理类................................................... 错误!未定义书签。

七、实现颜色处理功能............................................... 错误!未定义书签。

(一) 亮度处理................................................................. 错误!未定义书签。

(二) 对比度处理............................................................. 错误!未定义书签。

(三) 色阶处理................................................................. 错误!未定义书签。

(四) 伽马变换................................................................. 错误!未定义书签。

(五) 饱和度处理............................................................. 错误!未定义书签。

(六) 色调处理................................................................. 错误!未定义书签。

八、实现几何变换功能............................................... 错误!未定义书签。

(一) 图像缩放................................................................. 错误!未定义书签。

(二) 旋转......................................................................... 错误!未定义书签。

(三) 水平镜像................................................................. 错误!未定义书签。

(四) 垂直镜像................................................................. 错误!未定义书签。

(五) 右转90度................................................................. 错误!未定义书签。

(六) 左转90度................................................................. 错误!未定义书签。

(七) 旋转180度............................................................... 错误!未定义书签。

九、实现平滑锐化功能............................................... 错误!未定义书签。

十、图像处理扩展编程............................................... 错误!未定义书签。

一、概述实验项目: 图像处理程序编程运行环境: Windows XP/编程工具: Visual C++ 6.0主要内容:(1) 建立程序框架, 实现图像的读取、保存、显示;(2) 编写颜色处理、几何变换、平滑锐化等图像处理代码, 并实现其调用;(3) 自行编写实现扩展的图像处理功能。

二、建立程序框架预备工作: 在本机的硬盘上以自己完整的学号和姓名建立一个文件夹。

上机编程的内容全部保存在该文件夹中。

每次下机前将该文件夹拷贝到网络服务器上本班的文件夹中; 下次上机时再从服务器上将文件夹拷贝到本机。

1. 新建应用程序运行Visual C++ 6.0;点击菜单”文件——新建”, 打开”新建”对话框;点击”工程”选项页; 选中”MFC AppWizard(exe)”; 在”位置”编辑框中选中自己所建立的文件夹; 在”工程名称”编辑框中输入DIP???, 其中???为自己姓名的拼音缩写, 如DIPLJJ; 按”确定”按钮, 进入向导过程。

2. 应用程序向导步骤1: 选择”单文档”, 其它不变,步骤2: 不作改变, 点击”下一步”;步骤3: 不作改变,步骤4: 取消”打印和打印预览”; 按下”高级”按钮, 在”文件扩展名”编辑框中输入bmp, 关闭; 点击”下一步”;步骤5: 选择”作为静态的DLL”, 点击”下一步”;步骤6: 将CDIPLJJView类的基类选择为CScrollView, 其它不变, 点击”完成”。

点击”确定”。

3. 应用程序框架及基本操作在完成向导过程后, 将建立一套应用程序框架, 该框架中包含如下几个类:CDIPLJJApp ——应用程序类CMainFrame ——主窗口框架类CDIPLJJDoc ——文档类CDIPLJJView ——视图类CAboutDlg ——关于对话框类( 其中LJJ应换为自己姓名的拼音缩写, 后同)每个类都有一个类定义文件.h, 和类实现文件.cpp。

在VC主界面左侧的组合窗口中, 切换到”ClassViev”选项页, 点击展开”DIPLJJ Classes”, 将列出该应用程序的所有类。

双击某个类, 将在编辑窗口中打开该类的.h文件; 点击展开类, 双击类中已实现的某个成员函数, 将打开该类的.cpp文件。

4. 修改”关于”对话框在VC主界面左侧的组合窗口中, 切换到”ResourceView”选项页, 展开”DIPLJJ resources”,展开”Dialog”, 双击”IDD_ABOUTBOX”, 对”关于”对话框进行编辑, 在”版权所有(C) ”之前加上自己的学号和姓名, 然后保存。

5. 组建和运行程序点击菜单”组建——组建”, 或点击相应的工具条按钮, 生成可执行程序( exe) ;点击菜单”组建——执行”, 或点击相应的工具条按钮, 运行该程序, 在程序中打开”关于”对话框。

三、建立图像类1. 建立类文件点击菜单”插入——类”, 打开”新建类”对话框; 在类的类型中选中”Generic Class”; 在名称中输入”LImage”; 确定。

建立起LImage 类的头文件LImage.h和源文件LImage.cpp。

2. 编写类定义代码打开LImage.h文件, 将LImage类的定义代码添加到该头文件中( 灰底部分为文件中已有的代码, 后同) :class LImage{public:LImage();virtual ~LImage();BOOL Create(int a_Width,int a_Height);void Destroy();BOOL IsValid();BOOL CopyFrom(LImage *a_pImg);BOOL LoadBmpFile(CString a_Filename);BOOL SaveBitmap(CString a_Filename);//属性int m_Width,m_Height; //图像的宽度, 高度, 以象素计int m_WidthBytes; //每行象素所占字节数int m_ImageSize; //象素数据总字节数BYTE* m_pBits; //图像数据块CDC m_DC;//显示BOOL BitBlt(HDC a_DestDC,int a_DestX,int a_DestY,int a_Width,int a_Height,int a_SrcX,int a_SrcY,DWORD a_Rop=SRCCOPY);BOOL StretchBlt(HDC a_DestDC,int a_DestX,int a_DestY,int a_DestWidth,int a_DestHeight,int a_SrcX,int a_SrcY,int a_SrcWidth,int a_SrcHeight,DWORD a_Rop=SRCCOPY);int FitBlt(HDC a_DestDC,int a_DestX,int a_DestY,int a_DestWidth,int a_DestHeight,int a_SrcX,int a_SrcY,int a_SrcWidth,int a_SrcHeight,DWORD a_Rop=SRCCOPY);protected:HBITMAP m_hBitmap;HDC m_hMemDC;private:HBITMAP m_hOldBitmap;};#endif// !defined(AFX_LIMAGE_H__4BFB411F_B5D3_4A26_8188_919613CE D4A8__INCLUDED_)3. 编写类实现代码打开LImage.cpp文件, 将LImage类的实现代码添加到该文件中。

(1) 构造及析构函数LImage::LImage(){m_hBitmap = NULL;m_pBits = NULL;m_hMemDC = NULL;}LImage::~LImage(){Destroy();}(2) 图像空间创立函数按给定的图像尺寸分配图像的内存空间, 并定义相关参数。

BOOL LImage::Create(int a_Width,int a_Height){Destroy();if( a_Width==0 || a_Height==0 ) return FALSE;if( a_Width<0 ) a_Width = -a_Width;if( a_Height<0 ) a_Height = -a_Height;BITMAPINFO bi;bi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);bi.bmiHeader.biWidth = a_Width;bi.bmiHeader.biHeight = -a_Height; //使图像原点在左上角; 若为正数则在左下角。

相关文档
最新文档