OpenCV各版本差异
Opencv2标志着opencv革命性的改变,Opencv2带来了全新的C++接口,将Opencv的能力无限放大。在2.0时代,opencv增加了新的平台支持,包括iOS和Android,通过CUDA和openGL实现了GPU加速,为Python和Java用户提供了接口。
Opencv 3改变了项目架构的方式,3.0版本不会像2.0版本一样激进的尝试,只会有足够稳定的改进。项目架构的改变是Opencv 3最为重大的革新之处。2.0版本是各个模块都是以整体的形式构建然后组合在一起的。然而,随着功能的增加,opencv主体集成了各种各样的功能模块,变得越来越臃肿。而3.0版本就是为了给日益发福的opencv减肥,因为Opencv3决定向其他大项目一样,抛弃整体架构,使用内核+插件的架构形式。
在GitHub中,除了存放着正式版本的opencv的主仓库和新增加的“opencv_extra”仓库以外,opencv3中还添加了一个名为“opencv_contrib”的全新仓库,该仓库包括很多让人兴奋的功能:脸部识别,文本探测,文本识别,新的边缘检测器,充满艺术感的图像修复,深度地图处理,新的光流和追踪算法等。
opencv_contrib仓库是大多数实验性代码放置的地方,一些API可能会有改变,这些额外模块可以在CMake中用OPENCV_EXTRA_MODULES_PATH=/modules传递给CMake文件。
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.6,Linux下支持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++ API,C 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开始需要支持C++11的编译器才能编译,同时对几百个基础函数使用 "wide universal intrinsics"重写,这些内联函数可以根据目标平台和编译选项映射为SSE2、 SSE4、 AVX2、NEON 或者 VSX 内联函数,获得性能提升。此外,还加入了QR code的检测和识别,以及Kinect Fusion algorithm,DNN也在持续改善和扩充。
参考https://www.cnblogs.com/shine-lee/p/9884551.html
OpenCV各版本差异相关推荐
- OpenCV各版本差异与演化,从1.x到4.0
最近因项目需要,得把OpenCV捡起来,登录OpenCV官网,竟然发现release了4.0.0-beata版本,所以借此机会,查阅资料,了解下OpenCV各版本的差异及其演化过程,形成了以下几点认识 ...
- tensorflow r1.5 版本差异调研
原文:http://blog.csdn.net/SuperYR_210/article/details/78977588 tensorflow r1.5 版本差异调研 一.Breaking Chang ...
- OpenCV输出版本和构建配置的实例(附完整代码)
OpenCV输出版本和构建配置的实例 OpenCV输出版本和构建配置的实例 OpenCV输出版本和构建配置的实例 #include <opencv2/core/utility.hpp> # ...
- linux中的opencv多版本共存切换的问题
配置环境 已经编译了OpenCV2.X和OpenCV3.X的,而且安装在了不同的文件夹中,(其中有一个是默认安装,安装的路径位/usr/local) 切换文件配置 1 ~./bashrc的配置 #打开 ...
- pcl和opencv多版本共存
pcl和opencv多版本共存 在Ubuntu 16.04系统下安装kinetic版本ROS, 会默认安装opencv 3.3.1和pcl1.7. opencv安装路径 /opt/ros/kineti ...
- python版本差异_npm install报错,不知道是系统差异还是node版本差异,跟python有关系?...
源自:1-3 项目安装 npm install报错,不知道是系统差异还是node版本差异,跟python有关系? > gmsmith@0.1.3 preinstall D:\code\imooc ...
- 手机比较版本差异工具
CompareVersionDiff 导出每个手机版本的里面apk.property.xml配置,然后对比2个不同的版本之间的差异,来确认是否有非预期的修改被带入 背景: 手机项目开发进入后期,相关的 ...
- ubuntu下如何查看opencv的版本
ubuntu下如何查看opencv的版本 pkg-config --modversion opencv
- ElasticSearch之SpringData集成版本差异
文章目录 1. 版本差异 2. ElasticsearchRestTemplate 2.1 Spring-data-elasticsearch:4.0.5 2.2 Spring-data-elasti ...
最新文章
- 领扣-191 位1的个数 Number of 1 Bits MD
- 给你两个经纬度,计算他们之间的距离
- Android - 广播机制和Service
- c++ primer 5th 笔记:第二章
- 成功解决local variable 'str' referenced before assignment
- SQL语句 常用条件判断
- Round A - Kick Start 2019
- 吴恩达DeepLearningCourse4-卷积神经网络
- IDEA中使用Maven
- 中国什么时候才能全面普及 1 Gbps 下行的网速?
- 目的入口(dst_entry)
- linux-01-linux中的一些特殊符号
- 脊髓损伤有哪些方法方法?顾连康复方法有哪些
- Android实现NCM转MP3格式
- 市场需求文档MRD书写范例
- 仿b站Java_推荐 9 个 GitHub 上练手项目(在线考试、仿美团、仿抖音、仿B站、仿头条...)...
- Unity接入ios SDK(小7手游)没有你想的那么难
- 物联网(IoT)行业的决策管理应用
- ChatGPT教程之 01 什么是ChatGPT革命性的对话生成新工具
- 什么是php 开发,php开发是什么?