【OpenCV】01.OpenCV教程

Posted on Sep 11, 2022

本教程提供 OpenCV 从入门到进阶的全方面教程内容。

OpenCV 是一个开源的计算机视觉库。使用它能够让计算机识别到人脸或其他物品。本教程我们将会通过 Python 语言对 OpenCV 的功能进行学习。

什么是 OpenCV

OpenCV 是一个 Python 的开源视觉库。

在 OpenCV 中,CV 是计算机视觉(computer vision)的缩写。它用来帮助计算机理解一张图片或一段视频中的内容。

计算机视觉就是让计算机理解图片中的内容。它可以描述图片中的一个物品、一段文字或是一个立体图形。比如在下图中,汽车、交通灯、信号灯、交通流量等就可以被识别到。

what-is-opencv2

计算机视觉可以让计算机像人类一样处理问题。

  • 物品分类。我们训练一个模型能够准确的对物品进行分类。将一个新的物品划归到一个或多个分类之中。
  • 物品识别。通过训练模型能够准确的识别某个对象。例如分辨图片中的两个人。

what-is-opencv3

历史

OpenCV 在计算机视觉领域被广泛于图片识别与分类。它在 1999 年由 Intel 发起。

OpenCV 的第一个 alpha 版本在 2000 年 IEEE 大会上发布。从 2001 年到 2005 年共计发布了 5 个 Beta 版本。首个 1.0 版本发布于 2006 年。

第二个 OpenCV 版本发布于 2009 年,并带来的大量的变化。第二个版本带来了 C++ 扩展,更加易用,更多的类型安全特性,更加方便安装。由一个独立的俄罗斯团队每 6 个月就发布新版本。

OpenCV 是如何工作的

在本教程中,我们就来学习计算机是如何进行图像识别的。

计算机如何分析图像

人类通过眼睛观察获得大量信息。计算机通过将视觉信息转换为数字储存在内存中来识别。那么计算机如何将图像转换为数字呢?答案是计算机将图片中的像素值转换为数字。一个像素是图片的最小单元。

how-does-computer-recognize-the-image

图片中不同区域的亮度用数字表示。在上图中我们仅使用灰度值保存图片信息。灰度值可以表示出黑色在特定区域的强度。

这里有两种常见的方法来识别图像:

1. 灰度图

灰度图只有两种颜色,黑色和白色。图片中不同区域的区别只有黑色的强度。当我们使用灰度图时,计算机仅仅标注每个像素黑色的强度。

2.RGB

RGB 通过将红色、绿色、蓝色组合在一起,形成新的颜色。计算机将每个像素中的 RGB 信息进行计算后返回到屏幕上。

how-does-computer-recognize-the-image2

OpenCV 的优势

  • OpenCV 可以免费使用
  • OpenCV 用 C/C++ 写成,因此速度更快。现在它可以使用 Python 调用
  • 它需要的内存更少,大约 60-70 MB
  • 在可以运行 C 语言的机器就可以运行 OpenCV

前置条件

学习 OpenCV 之前你需要有 Python 的基础编程知识。