OpenCV图像处理入门与实践主要观点

简介: 基于OpenCV 4与Python,循序渐进介绍OpenCV从入门到实践的内容。

第1章

本章首先简单介绍了OpenCV,接着介绍在不同的编译环境中安装OpenCV的方法,然后介绍OpenCV中常用的Python内置函数、OpenCV中的常见错误,最后带领读者初步体验OpenCV的代码。

本章的主要内容如下。

• OpenCV的安装方法。

• OpenCV中常用的Python内置函数。

• OpenCV中的常见错误。

• OpenCV代码的初步体验并了解其运行规则。

注意:

对于Python内置函数的知识务必做到实时复习,以便后面编写实例代码。

1.1

OpenCV支持多种编程语言,包括C++、Python、Java等,使用范围十分广泛。它也可以在不同的操作系统上使用,包括Windows、Linux、macOS、Android和iOS等。

OpenCV-Python库可以说是OpenCV在Python中的一种尝试,使用方法类似于Python API(Application Programming Interface,应用程序接口)。它结合了OpenCV中C++实现的API的优点和Python的最佳特性,使用起来十分方便,因而受到了用户的喜爱。

之所以选择Python来实现OpenCV,是因为Python是一种面向对象的编程语言,它的简单性和代码可读性使程序员能够用更少的代码表达思想。虽然与C、C++等语言相比,Python运行速度比较慢,但是Python可以使用C或C++轻松扩展,从而提升其自身的运行速度。这也意味着我们可以在C或C++中编写计算密集型代码,并创建可用作Python模块的Python packet包器件。这么做有两个好处:首先,代码的运行速度与原始C或C++代码一样快(因为后台运行的实际上是C或C++代码);其次,使用Python编写代码比使用C或 C++更易上手。OpenCV-Python库就是原始OpenCV C++实现的OpenCV在Python语言中的移值。

除了OpenCV-Python模块以外,用户还可以使用NumPy模块,这是一个高度优化的数据库操作模块,使用类似于MATLAB的语法。所有OpenCV数组都可以转换为NumPy数组,这也使得OpenCV与使用NumPy的其他库的集成变得更加容易。

OpenCV支持与计算机视觉和机器学习相关的众多算法,并且应用领域正在日益扩展,大致有以下领域。

• 人机互动:类似于人机交互。

• 物体识别:通过视觉以及内部存储来进行物体的判断。

• 图像分割:ROI(Region of Interest,感兴趣区域)技术。

• 人脸识别:通过Haar(哈尔)级联等来实现。

• 动作识别:主要分为2D(二维)和3D(三维)动作识别。

• 运动追踪:通过构建掩膜来实现。

• 运动分析:基于图像追踪进行运动预测。

• 计算机视觉:多样化的图像数据分析。

• 结构分析:多平面图像的结构分析。

• 汽车安全驾驶:分析周边环境。

• 图像数据的操作:包括分配、释放、复制、设置和转换等,图像是视频的输入和输出。

• 摄像头的输入,图像和视频文件的输出。

• 矩阵和向量的操作,以及线性代数的算法程序(矩阵积、方程解、特征值以及奇异值等)。

• 各种动态数据结构:列表、队列、集合、树、图等。

• 基本的数字图像处理:滤波、边缘检测、角点检测、采样与插值、色彩转换、形态操作、直方图、图像金字塔等。

• 结构分析:连接部件、轮廓处理、距离变换、模板匹配、霍夫变换、多边形逼近、直线拟合、椭圆拟合、Delaunay(德洛奈)三角剖分等。

• 摄像头定标:发现与追踪定标模式、定标、基本矩阵估计、齐次矩阵估计、立体对应。

• 运动分析:光流、运动分割、追踪。

• 目标识别:特征法、HMM(Hidden Markov Model,隐马尔可夫模型)。

版权:人民邮电出版社