OpenCV的全称是Open Source Computer Vision Library,是一个跨平台的计算机视觉库。OpenCV是由英特尔公司发起并参与开发,以BSD许可证授权发行,可以在商业和研究领域中免费使用。OpenCV可用于开发实时的图像处理、计算机视觉以及模式识别程序。
OpenCV是由Gary Bradsky于1999年在Intel公司创建的,第一次发布是在2000年。瓦迪姆·皮萨列夫斯基(Vadim Pisarevsky)加入加里·布拉斯基(Gary Bradsky),管理英特尔俄罗斯软件OpenCV团队。2005年,OpenCV被用于Stanley,这款车赢得了美国国防部高级研究计划局2005年的重大挑战。后来,在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语言的最佳特性。
众所周知,虽然 Python 语法简洁、编写高效,但相比 C/C++运行慢很多。然而 Python 还有个重要的特性:它是一门胶水语言!Python 可以很容易地扩展 C/C++。OpenCV-Python 就是用 Python 包装了 C++的实现,背后实际就是 C++的代码在跑,运行速度非常接近原生。
比如我分别用 Python 和 C++实现读入图片和调整图片的亮度对比度,结果如下:

可以看到某些情况下 Python 的运行速度甚至好于 C++,代码行数也直接少一半多!
另外,图像是矩阵数据,OpenCV-Python 原生支持Numpy,相当于 Python 中的 Matlab,为矩阵运算、科学计算提供了极大的便利性。
近些年,人工智能 AI 相关技术的快速发展大家有目共睹。在编程语言方面,更多人希望的是具备高效开发效率、跨平台、高度扩展性的语言,尤其是一些 AI 巨头优先推出支持 Python 语言的深度学习框架,如 Facebook 的PyTorch、Google 的Tensorflow等,可以说 Python 是名副其实的“网红语言”了。

从TIOBE 编程语言排行榜也可以看到,Python 发展迅猛,已经逼近 C++的份额。这个排行榜每月更新,就不截图了,我编写时的 TOP5:Java/C/C++/Python/C#。

本教程所以案例使用的相关版本是:OpenCV 4.x,Python 3.x。
安装opencv-python只需终端下的一条指令:
pip install opencv-python
安装测试: Python 的版本可以在终端中输入python --version来查看。对于 OpenCV,打开 Python 的开发环境,输入import cv2,运行没有报错说明一切正常。要查看 OpenCV 的版本,可以:
import cv2
if __name__ == '__main__':
print(cv2.__version__)
输出结果:
4.11.0