了MFC 4.21,是4.2版以来比较大的一次升级。VC 6.0 集成了MFC 6.0,于 1998 年发布,发布至今一直被广泛地应用于大大小小的项目开发。VC.NET 2002(VC 7.0)于 2002 年发布,集成了 MFC 7.0,支持.NET 1.0,支持链接时代码生成和调试执行时检查。VC.NET 2003(VC 7.1)集成了MFC 7.1,于2003年发布,支持.NET 1.1。VC 2005(VC 8.0)集成了MFC 8.0,于 2005 年发布,支持.NET 2.0,该版本引进了对C++/CLI 语言和 Open MP 的支持。VC 2008(VC 9.0)集成了MFC 9.0,于 2007 年发布,支持.NET 3.5。VC 2010(VC 10.0)于 2010 年发布,集成了MFC 10.0,支持.NET4.0,支持 C++0x 新标准。
Visual C++ 作为一个功能非常强大的可视化应用程序开发工具,是计算机界公认的最优秀的应用开发工具之一。Microsoft 的基本类库 MFC 使得开发Windows应用程序比以往任何时候都要容易。C++提供的各种函数、指针操作和直接对硬件操作使得图像处理速度较快,专门为VC++设计的OpenGL和DirectX技术可以使开发人员在 Windows 环境下比较容易地完成图像图形的高性能处理和显示。用 VC++ 编制的应用软件无论在处理速度和图像的显示等方面都表现出较高的效率,因此在编制基于 Windows 的各类数字图像处理程序时,VC++是程序人员进行图像处理的最佳选择。 2.2 OpenCV介绍
OpenCV(Open source Computer Vision library)是 1999 年由 Intel 公司开发的图像处理和计算机视觉开放源码库,它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法[6]。现在由Willow Garage实验室提供支持。OpenCV 提供C++、C和Python接口,可以运行在Linux、Windows、Mac OS和Android 操作系统上。
OpenCV拥有包括 500 多个C/C++函数的跨平台的中、高层API,具有强
8
大的图像和矩阵运算能力。截止到 2012 年年初,OpenCV 已发展到 2.3.1 版本。每一次版本升级都伴随着众多的函数更新和优化。
早期版本的 OpenCV 包括 CxCore、Cv、CxAuv、HighGUI 和 ml 5 个主要模块。CxCore 包括一些基本结构和算法函数,如数据结构和线性代数支持,主要提供对各种数据类型的基本运算功能;Cv 主要实现图像处理和计算机视觉功能,包括图像处理、结构分析、运动分析、物体跟踪、模式识别及摄像机标定等功能;CxAuv 是 OpenCV 附加库函数,包括一些实验性的函数,如View Morphing、三维跟踪、PCA(Principal Component Analysis)和 HMM(Hidden Markov Model)等函数;HighGUI 是用户交互部分,包括 GUI(Graphical User Interface,图形用户接口)、图像视频 I/O 和系统调用函数等;ml是机器学习模块,只要内容为分类器。OpenCV 中曾经还有一个 CvCam 模块,但从 1.1 版本开始 OpenCV 便不再包含它,其功能被 HighGUI 所取代。
由于OpenCV提供的视觉处理算法非常丰富,并且它部分以C语言编写,加上其开源的特性,处理得当,不需要添加新的外部支持也可以完整的编译链接生成执行程序,所以用它来进行图像处理非常方便。本系统就是在VC++平台上使用MFC构建了一个软件,结合OpenCV视觉库针对车牌识别系统中各流程进行编程设计。
9