opencv简介

俗话说说出去的话等于泼出去的水,芒果先前夸下海口给自己挖坑 新站第一文:先把坑挖了!。不能被打脸太早,所以就开始填坑吧。先从第一个坑开始填吧,芒果也打算好好地学一遍opencv,整一个坑填下来保守估计要写150篇笔记。but whatever,活到老学到老,跟着芒果一起开始学opencv吧。

作为opencv填坑之旅的开篇,首先就了解一遍opencv是个什么东西吧。读完本文将了解到OpenCV为何物、OpenCV有何特点、OpenCV应用在哪些领域、OpenCV的发展历史以及发展趋势。

OpenCV是什么

与众多的程序库一样,OpenCV为一个简称。其全名为Open source computer vision library,顾名思义,翻译为中文便是:开源的计算机视觉库。所以,opencv简单地说是计算机视觉相关方面的开源库,认识opencv首先抓住开源计算机视觉两个关键词。上图为opencv的logo,logo的上半部分为图像中R(红色)、G(绿色)和B(蓝色)三个通道的图案,下半部分为opencv的文字简称。

OpenCV的特点有哪些

作为最受欢迎的计算机视觉库,opencv必定是有着其优秀的特点,吸引了越来越多的人学习和使用。

开源

在名字上都包含有开源,这当是opencv的首要特点了。opencv程序库是完全开源的,其代码被托管在github之上,地址为(https://github.com/opencv/opencv)。这意味着个人可以自由阅读以及修改后再重新编译源码,如果你水平足够厉害也可以参与到该项目的开发去,为opencv贡献自己的源码。

免费

或许你看到这会产生疑问,既然opencv都是开源的了,免费不是自然的吗,为何芒果要把免费作为一个特点来介绍。这里的免费指的是商用也免费,开源并不等同于免费的,不同的开源许可证授权具体规定不一样,例如Qt是开源的项目,但是商用部分是要收费的。opencv以BSD许可证授权发行,这意味这在商业软件中使用也是完全免费的。

跨平台

跨平台是opencv一个非常重要的特点,其程序库完全由c/c++开发,不依赖于具体平台的组件。这使得opencv支持在不同操作系统使用。支持的系统平台不仅包含Windows、MacOs和Linux等这些主流的pc平台,还支持包括安卓、ios移动操作系统。opencv的跨平台构建编译工具是cmake。

多语言支持

opencv的开发语言为c/c++(最新4.x版本已全部采用c++),同时也提供了多种语言的api调用接口。除c++接口外,如今也提供了python,js,java,matlab,C#等接口。这意味这你可以在这些编程语言的开发环境上使用opencv,目前使用最广泛的两种接口为c++与python。

OpenCV的应用领域

随着opencv越来越火,越来阅多的领域应用opencv。这些领域包含学术研究、安防监控、工业检测、医药生产以及军事领域等等。在这些领域opencv主要被用于解决如下问题:

  1. 增强现实
  2. 人脸识别
  3. 手势识别
  4. 人机交互
  5. 动作识别
  6. 运动跟踪
  7. 物体识别
  8. 图像分割
  9. 机器人

除了以上列举的,还有ocr文字识别、车牌识别等等。

OpenCV的历史及发展历程

OpenCV最早由intel公司于1999年发起并且主导开发,历经了20年的发展,大大小小的版本迭代非常多。以下是一些主要版本更新的记录。

  • 1999 OpenCV项目最早由英特尔公司于1999年启动,致力于CPU密集型的任务,是一个包括如光线追踪和3D显示的计划的一部分。
  • 2000 OpenCV的第一个预览版本于2000年在IEEE Conference on Computer Vision and Pattern Recognition公开,并且后续提供了五个测试版本。
  • 2006 1.0版本于2006年发布,此时的opencv接口为c语言。
  • 2009 OpenCV的第二个主要版本是2009年10月的OpenCV 2.0。该版本的主要更新包括C++接口,更容易、更类型安全的模式,新的函数,以及对现有实现的优化(特别是多核心方面)。
  • 2015 发布OpenCV3.0。也现在主要使用的版本。相比于2.0更改了项目的架构,更加地模块化,拥有大量的module,更偏向c++靠近,支持更多的硬件加速和更多的语言接口等。
  • 2018年12月 发布4.0。主要是增强了对深度学习的支持以及全面支持c++11的新标准。

如今的opencv大约每6个月就会发布一次版本更新,想要更详细的了解opencv发布历史,可到官网链接查阅。

OpenCV发展趋势

随着计算机视觉研究与应用的火热,越来越多人学习和使用opencv。opencv在新的时期也有了发展的变化,从opencv最近的版本发布可以了解到。opencv正朝着深度学习靠拢,也正朝着完全新标准的c++开发靠拢。所以说在以后要学好opencv,深度学习与新标准的c++是两个不可忽略的知识点。

尾巴

从芒果最开始学opencv,到现在已经两年了,但实际感受是还只是了解opencv的皮毛,所以借着填坑这一想法,想重新好好学习一遍opencv。


本文由芒果浩明发布,转载需注明来源。 本文链接:https://blog.mangoeffect.net/opencv/opencv-introduction.html


微信公众号