简介

OpenCV 是在BSD许可证下开源的计算机视觉和机器学习软件,诞生于2000年,经过专业社区长期开发和维护,在Windows、macOS、Linux、iOS、Android各大平台都有对应的实现,源代码用C++编写,通过模板化接口与STL容器无缝衔接,并提供了Python、Java、MATLAB编程接口,具有生态完备、功能齐全的特点,在学术界、工业界、各个组织得到了广泛应用。OpenCV是计算机视觉理论学习和工程实践不可回避的工具。

  1. 几组数字:
    • 2500+ 计算机视觉相关算法
    • 47,000+ 开发者组成的社区
    • 1800+ 万下载量
  2. OpenCV能干什么?一些直观印象:
    • 检测和识别人脸、识别对象、对视频中的人类行为进行分类
    • 跟踪摄像机运动、跟踪运动对象
    • 提取物体的三维模型、从立体摄像机生成三维点云
    • 将图像拼接在一起以生成整个场景的高分辨率图像
    • 从图像数据库中找到相似的图像
    • 从使用flash拍摄的图像中去除红眼,跟踪眼球运动
    • 识别场景并建立标记以覆盖增强现实等

学习计划

从最近的机器感知课程可以感觉到,很多视觉任务,用不着复杂的模型实现,OpenCV提供的实现效果就很好,而且计算经过许多优化,很多情况下是解决视觉任务首选。由于官方文档内容太多,一个人学起来太耗时,我们成立一个学习小组,每人负责学习几个模块,实践其中几个视觉算法,然后把自己学的内容讲给大家。下面的 tutorial 分为4部分,每部分由一个同学负责

期望目标

OpenCV是一个知识体系,期望达到的学习效果是比较详细地了解它的

  • 发展脉络
  • 组织结构
  • 功能模块
  • 适用情况
  • Python Bindings工作原理
  • 版本差异,如2.x、3.x、4.x

在遇到问题时候,知道和哪块知识相关,去查哪块文档。学习教程不必写成官方文档的翻译稿,这没有多大意义,关键是掌握以上所列几点

语言和版本

为了省去编译步骤和一些依赖工具的安装(编译安装不是学习目的,而且比较繁琐),我们选用Python作为编程语言

OpenCV 有很多版本,我们统一使用 3.4.10,它是一个稳定的发行版,经过了长期开发维护,对应的文档和代码都用这个版本

Tutorial I

  • Introduction to OpenCV Learn how to setup OpenCV-Python on your computer!

  • Gui Features in OpenCV Here you will learn how to display and save images and videos, control mouse events and create trackbar.

  • Core Operations In this section you will learn basic operations on image like pixel editing, geometric transformations, code optimization, some mathematical tools etc.

Tutorial II

Tutorial III

Tutorial IV

C++

Tutorial I

Tutorial II

Tutorial III

Tutorial IV

Optional