- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
类与对象简介
class Student { private :
类的定义格式: class 类 名 类 名 关键字 { private : 成员数据; 私有 成员函数; public : 公有 成员数据; 成员函数; 保护 protected: 成员数据; 成员函数; }; 分号不能少
char Name[20];Байду номын сангаас
面向对象程序设计采取的是另外一种思路。
它面对的是一个个对象。实际上,每一组数据都 是有特定的用途的,是某种操作的对象。
也就是说,一组操作调用一组数据。
面向对象的程序设计 程序设计者的任务包括两个方面:一是设计所需 的各种类和对象,即决定把哪些数据和操作封装在一 起;二是考虑怎样向有关对象发送消息,以完成所需 的任务。各个对象的操作完成了,整体任务也就完成 了。
面向对象的程序设计 -类与对象及其应用
讲 课 人:Cherist Huan
专业:模式识别与智能系统 (Pattern Recognition and Intelligent System )
LOGO
面向对象的程序设计 传统的面向过程程序设计是围绕功能进行的,用 一个函数实现一个功能。所有的数据都是公用的,一 个函数可以使用任何一组数据,而一组数据又能被多 个函数所使用。程序设操作 。 计者必须考虑每一个细节,什么时候对什么数据进行
//色彩转换 void ColorConvert_RGBtoGray(UCHAR *srcImg,UCHAR*destImg,int width,int height); //帧差函数 void AbsDiff(UCHAR *srcImg1,UCHAR*srcImg2,UCHAR *destImg,int width,int height); //通过颜色把烟雾从目标中区分开 void checkSmokeFromTraget_color(UCHAR *srcImg,UCHAR *detImg,int width,int height); //通过色调条件去除一些非烟雾区域 void checkSmokeFromTraget_HSV(UCHAR *srcImg,UCHAR *detImg,int width,int height); //投影滤波 void TouYingFliter(UCHAR *srcImg,UCHAR *detImg,int width,int height); //中值滤波 void MidFilter(UCHAR *srcImg,UCHAR*destImg,int width,int height); //二值化函数 void TwoValue(UCHAR *srcImg,UCHAR *detImg,int width,int height,int Thresold); //序号转换 void convert(int first,int &idex1,int &idex2);
a1 样本1
b1 样本2
a4 高斯模型法
a2 帧间差分法 b2 帧间差分法
b4 高斯模型法
a3 聚类法
b3 聚类法
a5 本文算法
b5 本文算法
3 3.3 夜间图像增强
C++项目开发相关
a1 样本1
b1 样本2
a2 对比度增强
b2 对比度增强
a4 文献[51]增强
b4 文献[51]增强
a3 Retinex增强
首先,仔细分析项目的需求: 项目的需求:对视频监控系统中,视频图像出现的烟雾进行检 测并报警,将检测出的烟雾区域在视频图像中标出。 其次,根据项目的需求设计烟雾检测类的接口函数: 接口函数就是烟雾检测类的成员函数(也就是功能函数)
//功能函数接口 public: void Check_Smoke(UCHAR *srcImg_current,int width,int height,int& left, int& top, int& right, int& bottom,UCHAR *Img_result);
因此人们设想把相关的数据和操作放在一起,形 成一个整体,与外界相对分隔。这就是面向对象的程 序设计中的对象。
面向对象的程序设计 在面向过程的结构化程序设计中,人们常使用这样的 公式来表述程序∶ 程序=算法+数据结构 面向对象的程序组成: 对象 = 算法 + 数据结构 程序=(对象+对象+对象+……)+ 消息 消息:就是对对象的控制。 程序设计的关键是设计好每一个对象以及确定向这些对 象发出的命令,使各对象完成相应的操作。
3
C++项目开发相关
计算机应用系统在日常工作生活中随处可见,下面主要就研 究生阶段参加的部分实际项目简单介绍下C++语言在实际项目中 的应用! 3.1 雾天图像增强
3.3 夜间图像增强 3.5 数据库读写系统
3.2 雨雪天气图像增强
3.4 烟火检测系统 3.6 数字水印
3
C++项目开发相关
3.1 雾天图像增强
象的类。
2
实际应用--设计类的过程
要想学好一门编程语言,必须多加练习,在实际的项目进行锻 炼学习是学习一门编程语言最快的方法,同学们应该多参加一些 实际相关项目进行锻炼,下面结合自己 学习经验以及研究生阶段 参加的实际项目经验,讨论一下,实际中根据项目要求设计类 的 过程。 这里主要根据我做过的一个简单项目:视频监控系统中烟雾检测的 开发过程进行讨论设计一个烟雾检测类 过程:
再次,根据项目的需求以及成员函数,设计类的数据成员: private: //图像高度 int Height; //图像宽度 int Width; //下标序号 int last_frame; int Idex11,Idex12; int first; int Idex21,Idex22;
//保存帧差需要的图像 UCHAR **CalImageBuf; //保存面积变化 double *AreaBuf;
用关键字priviate限定的成员称为私有成员,对私有
成员限定在该类的内部使用,即只允许该类中的成员函
数使用私有的成员数据,对于私有的成员函数,只能被
该类内的成员函数调用;类就相当于私有成员的作用域。 用关键字public限定的成员称为公有成员,公有成员的 数据或函数不受类的限制,可以在类内或类外自由使用; 对类而言是透明的。 而用关键字protected所限定的成员称为保护成员,只允 许在类内及该类的派生类中使用保护的数据或函数。即保 护成员的作用域是该类及该类的派生类。
最后,根据设计的类,进行功能测试,验证设计类的有效性:
//============================烟火检测接口定义============================ //创建烟火检测实例 //返回:成功返回true,失败返回false __declspec(dllexport) bool CreateFireworksDetecter( int id,//分析对象ID int width, int height ); //烟火检测 //返回:烟火检测结果结构体 __declspec(dllexport) bool FireworksDetect( int id,//分析对象ID byte* bmp,//分析图像数据(bpp) int width,//图像宽(单位:pixel) int height,//图像高(单位:pixel) byte* regionsMask//烟火区域模板图(bpp,背景为,火为,烟为) ); //释放烟火检测实例 //返回:正确返回true,错误返回false __declspec(dllexport) bool FreeFireworksDetecter( int id//分析对象ID );
私有成员 公有成员 保护成员 类内函数 可以调用 可以调用 可以调用 类外函数 不可调用 可以调用 不可调用 私有函数 公有函数 类内函数 可以调用 可以调用 类外函数 不可调用 可以调用 保护函数 可以调用 不可调用
1
类与对象简介
在定义类时,只是定义了一种数据类型,即说明程序 中可能会出现该类型的数据,并不为类分配存储空间。 只有在定义了属于类的变量后,系统才会为类的变量 分配空间。类的变量我们称之为对象。 对象是类的实例,定义对象之前,一定要先说明该对
主要内容
1
类与对象简介
2 实际应用-设计类的过程
3 4
C++项目开发相关 总结与致谢
1
类与对象简介
类是一种复杂的数据类型,它是将不同类型的数据和与这些 数据相关的运算封装在一起的 集合体。 类将一些数据及与数据相关的函数封装在一起,使类中的 数据得到很好的“保护”。在大型程序中不会被随意修改。
1
float Math; float Chiese;
public :
float average; void SetName(char *name); void SetMath(float math); void SetChinese(float ch); float GetAverage(void); };
b3 Retinex增强
a5 本文增强
b5 本文增强
3 3.4 烟火检测系统
C++项目开发相关
3 3.5 数据库读写系统
C++项目开发相关
3
C++项目开发相关
3.6 数字水印
4 总结
总结与致谢
1、简单介绍了C++中类与对象的相关基础知识;
2、根据自己的学习和项目经验介绍了在实际项目中设计一个 类的过程; 3、简单介绍了面向对象开发的一些项目。 致谢 感谢计算机与信息工程学院! 感谢各位领导,各位老师百忙中抽出时间 听我的试讲!