OpenCV
OpenCV 于 1999 年由 Gary Bradsky 在英特尔创立,并于 2000 年发布了第一个版本。Vadim Pisarevsky 加入 Gary Bradsky,管理英特尔在俄罗斯的软件 OpenCV 团队。2005 年,OpenCV 被用于 Stanley,这辆车赢得了 2005 年 DARPA 挑战赛。后来,在 Willow Garage 的支持下,由 Gary Bradsky 和 Vadim Pisarevsky 领导的项目继续积极发展。OpenCV 现在支持多种与计算机视觉和机器学习相关的算法,并且正在日益扩展。
OpenCV 支持多种编程语言,如 C++、Python、Java 等,并可在不同的平台上使用,包括 Windows、Linux、OS X、Android 和 iOS。基于 CUDA 和 OpenCL 的高速 GPU 操作接口也在积极开发中。
OpenCV-Python 是 OpenCV 的 Python API,结合了 OpenCV C++ API 和 Python 语言的最佳品质。
OpenCV-Python
OpenCV-Python 是一个 Python 绑定库,旨在解决计算机视觉问题。
Python 是一种通用编程语言,由 Guido van Rossum 创立,很快变得非常流行,主要是因为它的简单性和代码的可读性。它使程序员能够在不降低可读性的情况下用更少的代码行来表达思想。
与 C/C++ 等语言相比,Python 要慢一些。Python 可以很容易地用 C/C++ 扩展,这允许我们用 C/C++ 编写计算密集型代码,并创建可以用作 Python 模块的 Python 包装器。这给我们带来了两个优势:第一,代码和原来的 C/C++ 代码一样快(因为在后台工作的实际是 C++ 代码),第二,用 Python 编写代码比用 C/C++ 更容易。OpenCV-Python 是原始 OpenCV C++ 实现的 Python 包装器。
OpenCV-Python 使用了 Numpy, Numpy 是一个高度优化的数字运算库,具有 MATLAB 风格的语法。所有的 OpenCV 数组结构都与 Numpy 数组转换。这也使得它更容易与其他使用 Numpy 的库集成,比如 SciPy 和 Matplotlib。
OpenCV-Python 教程
OpenCV 引入了一组新的教程,将指导你了解 OpenCV-Python 中各种可用的函数。本指南主要关注 OpenCV 3.x 版本(尽管大多数教程也适用于 OpenCV 2.x)。
推荐先了解 Python 和 Numpy,因为本指南不会涉及它们。熟练使用 Numpy 是必须的,以便使用 OpenCV-Python 编写优化的代码。
本教程最初由 Abid Rahman K. 在 Alexander Mordvintsev 的指导下发起,是 Google Summer of Code 2013 项目的一部分。
OpenCV 需要你!
OpenCV 是一个开源项目,欢迎所有人对库、文档和教程做出贡献。如果你在本教程中发现任何错误(从一个小的拼写错误到一个严重的代码或概念错误),请通过在 GitHub 中克隆 OpenCV 并提交一个 pull 请求来纠正它。OpenCV 开发人员会检查你的 pull 请求,给你重要的反馈(一旦通过评审者的批准),它会被合并到 OpenCV 中。你将成为一个开源贡献者:-)
随着新的模块被添加到 OpenCV-Python 中,本教程将不得不进行扩展。如果你熟悉一个特定的算法,能写一个教程,包括算法的基本理论和代码演示示例使用,请这样做。
记住,我们一起可以使这个项目取得巨大的成功!
贡献者
以下是向 OpenCV-Python 提交了教程的贡献者列表。
1. Alexander Mordvintsev(GSoC-2013 导师)
2. Abid Rahman K.(GSoC-2013 实习生)
其他资源
1. Python 快速指南 - A Byte of Python (https://python.swaroopch.com/)
2. NumPy 快速入门教程 (https://numpy.org/devdocs/user/quickstart.html)
3. NumPy 参考 (https://numpy.org/devdocs/reference/index.html#reference)
4. OpenCV 文档 (https://docs.opencv.org/)
5. OpenCV 论坛 (https://forum.opencv.org/)
官方文档:
https://docs.opencv.org/4.x/d0/de3/tutorial_py_intro.html