VC++opencv静止背景下运动视频对象的分割(3)
时间:2017-05-26 16:57 来源:毕业论文 作者:毕业论文 点击:次
1.5 Visual C++ VC++是微软公司开发的一个IDE(集成开发环境) ,是使用c++的一个开发平台。[2]vc++是Windows平台上的C++编程环境,学习VC要了解很多Windows平台的特性并且还要掌握MFC、ATL、COM等的知识,难度比较大。Windows下编程需要了解Windows的消息机制以及回调(callback)函数的原理;MFC是Win32API的包装类,需要理解文档视图类的结构,窗口类的结构,消息流向等等;COM是代码共享的二进制标准,需要掌握其基本原理等等。 VC++作为一个主流的开发平台一直深受编程爱好者的喜爱,但是很多人却对它的入门感到难于上青天,究其原因主要是大家对他错误的认识造成的,严格的来说 VC++不是一门语言,虽然它和C++之间有密切的关系,如果形象点比喻的话,可以C++看作为一种“工业标准”,而VC++则是某种操作系统平台下的“厂商标准”,而“厂商标准”是在遵循“工业标准”的前提下扩展而来的。 VC++应用程序的开发主要有两种模式,一种是WIN API方式,另一种则是MFC方式,传统的WIN API开发方式比较繁琐,而MFC则是对WIN API再次封装,所以MFC相对于WIN API开发更具备效率优势。 vc6.0的优点是界面简洁,占用资源少,操作方便。 1.6 Opencv概述 OpenCV,全名为Open Source Computer Vision Library,是由Intel公司资助开发的开源计算机视觉库。它由一系列C语言和C++构成,提供了针对各种图像和视频源文件(如:bitmap图像,video文件和实时摄像机)的帧提取函数和一些标准的图像处理函数,提供了图像处理和计算机视觉研究方面的很多通用算法。 在过去的几十年,处理器速度和内存容量以摩尔定律增长,相应的计算机视频处理技术的研究和应用也得到了迅速的发展。以往传统的开发方法要求工程人员在完成硬件设计的同时,自己编码实现所有底层的算法,所有的图像处理函数都要从头编写。这既造成时间和精力上的浪费,又难以保证稳定性、实用性、快捷性和通用性,越来越难以满足现实的需求。为了解决理论到应用的难题,出现了一系列计算机视觉和图像处理软件包。这其中大多数软件包是用C语言或C++编写的。 例如,TargetJr及其后续版本VXLl2u(the Vision something Libraries)就是这样一个C++库的集合。在满足的方便、快速和稳定这些系统的开发要求的同时提供了多平台移植性。Gandalf提供了计算机视觉和数值计算库,适合于可移植平台的视觉应用软件程序的开发。Delft科学图像处理库DIPlib是另一个科学图像处理C程序库,包含了许多图像数据多文分析和处理的函数。同时许多商用图像处理和计算机视觉软件包也得到了相应的开发。MVTec公司开发的HALCON是其中之一,它包含了C语言和C++代码的图像处理库。LabView在Nl图像处理硬件的支持下能加速图像信息处理。由微软公司开发的SDK是一个底层的图像操作分析的C++库。在Matlab中的图像处理工具包以及在Mathematica中的数字图像处理软件包都是较为强大的图像处理工具,这两个软件包还具有许多高级数学计算功能。由Aurora公司开发的LEADTOOLS是一套商用化计算机视觉包,它包括了图像处理服务器开发工具。它允许用户创建各种基于网络的图像处理服务程序。这些软件包为计算机图像分析和机器视觉提供了极大的便利和帮助。但同时也存在不足之处: 大多数软件包没有高级数学计算函数。而且这些软件包都不包括高层函数,如目标跟踪、摄像机标定、姿态识别、脸谱识别和三文重建等。 Matlab是功能较为强大的科学计算和分析平台,它提供了图像处理工具包,也提供了较为丰富的数学计算函数,但在Matlab环境下的运行速度较慢,无法实现高效性。虽然Matlab可以通过编译器将m文件转化为C代码。但是转换后的C代码的执行效率和可读性仍然存在较大的问题。 (责任编辑:qin) |