网络推广需要什么技能,什么是优化产业结构,湘潭做网站价格优选磐石网络,wordpress主页出现副标题最近因项目需要#xff0c;得把OpenCV捡起来#xff0c;登录OpenCV官网#xff0c;竟然发现release了4.0.0-beata版本#xff0c;所以借此机会#xff0c;查阅资料#xff0c;了解下OpenCV各版本的差异及其演化过程#xff0c;形成了以下几点认识#xff1a;
新版本的…最近因项目需要得把OpenCV捡起来登录OpenCV官网竟然发现release了4.0.0-beata版本所以借此机会查阅资料了解下OpenCV各版本的差异及其演化过程形成了以下几点认识
新版本的产生是为了顺应当下的需要通过版本更新接纳新技术和新方法支持新兴编程语言接口使用新的指令集优化性能解决固有问题等新技术新方法会优先加入到新的大版本中即使新的技术方法可以在旧版本中实现但为了推动用户向新版本迁移仍会优先加入到新版本中这条看着与第1条差不多实际意义是不同的新版本不可避免地会带有旧版本的痕迹毕竟新版本是从旧版本基础上“生长”出来的新老版本间能看到比较明显的过渡痕迹同时出于降低迁移成本的考虑需要部分向前兼容因此如果新版本已经稳定且需要从头开始新项目先考虑拥抱新版本。若碰到问题可到旧版本的资料中找找答案。但这并不绝对具体情况还得具体分析。 下面分析下各版本的差异以及演化路径。
OpenCV版本差异与演化1.x To 4.0
OpenCV 1.x
OpenCV 最初基于C语言开发API也都是基于C的面临内存管理、指针等C语言固有的麻烦。
2006年10月1.0发布时部分使用了C同时支持Python其中已经有了random trees、boosted trees、neural nets等机器学习方法完善对图形界面的支持。
2008年10月1.1pre1发布使用 VS2005构建Python bindings支持Python 2.6Linux下支持Octave bindings在这一版本中加入了SURF、RANSAC、Fast approximate nearest neighbor search等Face Detection (cvHaarDetectObjects)也变得更快。
OpenCV 2.x
当C流行起来OpenCV 2.x发布其尽量使用C而不是C但是为了向前兼容仍保留了对C API的支持。从2010年开始2.x决定不再频繁支持和更新C API而是focus在C APIC API仅作备份。
2009年9月2.0 beta发布主要使用CMake构建加入了很多新特征、描述子等如FAST、LBP等。
2010年4月2.1版本加入了Grabcut等可以使用SSE/SSE2…指令集。
2010年10月2.2版本发布OpenCV的模块变成了大家熟悉的模样像opencv_imgproc、opencv_features2d等同时有了opencv_contrib用于放置尚未成熟的代码opencv_gpu放置使用CUDA加速的OpenCV函数。
2011年6月起的2.3.x版本、2012年4月起的2.4.x版本一面增加新方法一面修复bug同时加强对GPU、Java for Android、 OpenCL、并行化的支持等等OpenCV愈加稳定完善值得注意的是 SIFT和SURF从2.4开始被放到了nonfree 模块因为专利。
考虑到过渡OpenCV 2.4.x仍在维护不过以后可能仅做bug修复和效率提升不再增加新功能——鼓励向3.x迁移。
OpenCV 3.x
随着3.x的发布1.x的C API将被淘汰不再被支持以后C API可能通过C源代码自动生成。3.x与2.x不完全兼容与2.x相比主要的不同之处在于OpenCV 3.x 的大部分方法都使用了OpenCL加速。
2014年8月3.0 alpha发布除大部分方法都使用OpenCL加速外3.x默认包含以及使用IPP同时matlab bindings、Face Recognition、SIFT、SURF、 text detector、motion templates simple flow 等都移到了opencv_contrib下opencv_contrib不仅存放了尚未稳定的代码同时也存放了涉及专利保护的技术实现大量涌现的新方法也包含在其中。
2017年8月3.3版本2017年12月开始的3.4.x版本opencv_dnn从opencv_contrib移至opencv同时OpenCV开始支持C 11构建之后明显感到对神经网络的支持在加强opencv_dnn被持续改进和扩充。
OpenCV 4.0
2018年10月4.0.0发布OpenCV开始需要支持C11的编译器才能编译同时对几百个基础函数使用 wide universal intrinsics重写这些内联函数可以根据目标平台和编译选项映射为SSE2、 SSE4、 AVX2、NEON 或者 VSX 内联函数获得性能提升。此外还加入了QR code的检测和识别以及Kinect Fusion algorithmDNN也在持续改善和扩充。
总结
这些年来计算机视觉领域的新技术新方法不断涌现指令集、编程语言和并行化技术越发先进OpenCV也在紧跟时代的脚步不断吸收完善自身。本文仅对OpenCV的演化过程仅总结了部分要点详细可参见 OpenCV 在 github上的ChangeLog。