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各版本差异相关推荐

  1. OpenCV各版本差异与演化,从1.x到4.0

    最近因项目需要,得把OpenCV捡起来,登录OpenCV官网,竟然发现release了4.0.0-beata版本,所以借此机会,查阅资料,了解下OpenCV各版本的差异及其演化过程,形成了以下几点认识 ...

  2. tensorflow r1.5 版本差异调研

    原文:http://blog.csdn.net/SuperYR_210/article/details/78977588 tensorflow r1.5 版本差异调研 一.Breaking Chang ...

  3. OpenCV输出版本和构建配置的实例(附完整代码)

    OpenCV输出版本和构建配置的实例 OpenCV输出版本和构建配置的实例 OpenCV输出版本和构建配置的实例 #include <opencv2/core/utility.hpp> # ...

  4. linux中的opencv多版本共存切换的问题

    配置环境 已经编译了OpenCV2.X和OpenCV3.X的,而且安装在了不同的文件夹中,(其中有一个是默认安装,安装的路径位/usr/local) 切换文件配置 1 ~./bashrc的配置 #打开 ...

  5. pcl和opencv多版本共存

    pcl和opencv多版本共存 在Ubuntu 16.04系统下安装kinetic版本ROS, 会默认安装opencv 3.3.1和pcl1.7. opencv安装路径 /opt/ros/kineti ...

  6. python版本差异_npm install报错,不知道是系统差异还是node版本差异,跟python有关系?...

    源自:1-3 项目安装 npm install报错,不知道是系统差异还是node版本差异,跟python有关系? > gmsmith@0.1.3 preinstall D:\code\imooc ...

  7. 手机比较版本差异工具

    CompareVersionDiff 导出每个手机版本的里面apk.property.xml配置,然后对比2个不同的版本之间的差异,来确认是否有非预期的修改被带入 背景: 手机项目开发进入后期,相关的 ...

  8. ubuntu下如何查看opencv的版本

    ubuntu下如何查看opencv的版本 pkg-config --modversion opencv

  9. ElasticSearch之SpringData集成版本差异

    文章目录 1. 版本差异 2. ElasticsearchRestTemplate 2.1 Spring-data-elasticsearch:4.0.5 2.2 Spring-data-elasti ...

最新文章

  1. 领扣-191 位1的个数 Number of 1 Bits MD
  2. 给你两个经纬度,计算他们之间的距离
  3. Android - 广播机制和Service
  4. c++ primer 5th 笔记:第二章
  5. 成功解决local variable 'str' referenced before assignment
  6. SQL语句 常用条件判断
  7. Round A - Kick Start 2019
  8. 吴恩达DeepLearningCourse4-卷积神经网络
  9. IDEA中使用Maven
  10. 中国什么时候才能全面普及 1 Gbps 下行的网速?
  11. 目的入口(dst_entry)
  12. linux-01-linux中的一些特殊符号
  13. 脊髓损伤有哪些方法方法?顾连康复方法有哪些
  14. Android实现NCM转MP3格式
  15. 市场需求文档MRD书写范例
  16. 仿b站Java_推荐 9 个 GitHub 上练手项目(在线考试、仿美团、仿抖音、仿B站、仿头条...)...
  17. Unity接入ios SDK(小7手游)没有你想的那么难
  18. 物联网(IoT)行业的决策管理应用
  19. ChatGPT教程之 01 什么是ChatGPT革命性的对话生成新工具
  20. 什么是php 开发,php开发是什么?

热门文章

  1. hp 打印机更改 wifi direct 的密码
  2. 时间管理 四象限 todoList
  3. springboot启动失败之A child container failed during start
  4. java调用云小蜜示例教程(调用sdk版本)
  5. C#使用随机数模拟器来模拟世界杯排名(二)
  6. 5G NR标准 第4章 LTE概述
  7. MySQL面试系列:MVCC是怎么实现的?(三)
  8. .Net 垃圾回收机制原理(一)
  9. 撸吧,你活不到明天了
  10. SpringBoot + Thymeleaf + Bootstrap + 随手记 实现自动记账