前言:Hello大家好,我是小哥谈。众所周知,OpenCV是人工智能计算机视觉领域的基石,长期以来一直是软件开发的重要组成部分。对开发人员来说,学习OpenCV是提高编程能力并帮助他们发展软件开发职业生涯的好方法。本实战教程通过浅显易懂的方式,快速带你系统掌握OpenCV基础及核心知识点。🌈
** 前期回顾:**
史上最全OpenCV常用方法及使用说明汇总,建议收藏!
从今天开始,我会更新一系列文章来详细讲述OpenCV,那么现在就让我们开始进入OpenCV的世界吧!🔖
🚀1.OpenCV的定义
OpenCV(Open Source Computer Vision Library)是一个基于BSD许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、**Android **和 Mac OS操作系统上。它轻量级而且高效--由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。📚
OpenCV可以用于各种应用场景,包括图像处理、视频处理、目标检测、人脸识别等等。它的主要模块包括图像处理基础、图形与文本绘制、常见图像处理技术、图像运算、色彩空间和色彩映射、直方图、图像分割、轮廓检测、深度学习等等。通过OpenCV,我们可以进行各种图像和视频的处理和分析,以及开发计算机视觉相关的应用。🌷
OpenCV可以用来进行高效的运算,十分强调实时应用的开发。OpenCV由C ++语言编写并进行了深度优化,从而可以享受多线程处理的优势。 OpenCV的目标是提供易于使用的计算机视觉接口,帮助开发人员在实际开发中快速建立精巧的视觉应用。为此, OpenCV库包含了从计算机视觉各个领域衍生出来的500多个方法。🌸
参考:♨️ ♨️ ♨️
关于OpenCV方法的应用,可以参考我的另外一篇文章。
史上最全OpenCV常用方法及使用说明汇总,建议收藏!
说明:♨️ ♨️ ♨️
OpenCV官方网站:OpenCV - Open Computer Vision Library
🚀2.OpenCV包含的模块
OpenCV是由很多模块组成的,这些模块可以分为很多层,具体如下图所示。
那么,OpenCV包含的模块都有哪些呢?下面将会列出OpenCV常用的模块。👇
☘️Core:包含OpenCV库的基础结构以及基本操作。
**☘️Improc: **包含基本的图像转换,包括滤波以及卷积操作。
**☘️Video:**包括读取和写视频流的方法。🎀
**☘️Calib3d: **包括校准单个、双目以及多个相机的算法实现。
**☘️Feature2d: **包含用于检测、描述以及匹配特征点的算法。
**☘️Objdectect: **包含检测特定目标的算法。
**☘️ML:**包含大量的机器学习的算法。
**☘️GPU: **包含在CUDA GPU上优化实现的方法。
等等...🍉 🍓 🍑 🍈 🍌 🍐
为了快速建立精巧的视觉应用,OpenCV提供了许多模块和方法。开发人员不必过多关注这些模块和方法的具体实现细节,只需关注图像处理,就能够很方便地使用它们对图像进行相应的处理。🎀🎀
🚀3.OpenCV的发展历程
从2009年3月至今,OpenCV的发展历程如图所示。随着OpenCV被越来越多的用户认可并提供越来越多的技术支持,OpenCV的研发团队也加大了研究人员和研究经费的投入,这使得OpenCV的下载量在逐年增长着。
OpenCV的发展历程不是一帆风顺的。OpenCV在发展历程中,不仅受到了互联网行业内泡沫经济的冲击,还受到了管理层和管理方向不断变更的影响,有时甚至没有研究人员和研究经费的投入。但是,随着多核处理器的出现以及计算机视觉的应用越来越广泛,OpenCV的应用价值开始上升。
截止到目前,OpenCV已经得到了基金会、一些上市公司和私人机构的支持。OpenCV的宗旨是促进商业(利用OpenCV构建商业产品)和研究,因此OpenCV是开源并且免费的。这不仅使得OpenCV拥有着庞大的用户群体,还使得OpenCV在世界各国内逐渐流行起来。🍑
🚀4.OpenCV的应用
因为OpenCV是一个开源的计算机视觉库,所以在列举OpenCV的应用之前,先对计算机视觉的应用进行举例。🍀
计算机视觉是一门研究如何使机器"看"的科学,更进一步的说,就是指用摄影机和电脑代替人眼对目标进行识别、跟踪和测量等机器视觉,并进一步做图形处理,使电脑处理成为更适合人眼观察或传送给仪器检测的图像。作为一个科学学科,计算机视觉研究相关的理论和技术,试图建立能够从图像或者多维数据中获取'信息'的人工智能系统。这里所指的信息指Shannon定义的,可以用来帮助做一个"决定"的信息。因为感知可以看作是从感官信号中提取信息,所以计算机视觉也可以看作是研究如何使人工系统从图像或多维数据中"感知"的科学。🎀
计算机视觉是使用计算机及相关设备对生物视觉的一种模拟,是人工智能领域的一个重要部分,它的研究目标是使计算机具有通过二维图像认知三维环境信息的能力。计算机视觉是以图像处理技术、信号处理技术、概率统计分析、计算几何、神经网络、机器学习理论和计算机信息处理技术等为基础,通过计算机分析与处理视觉信息。💪
OpenCv在现实生活中的应用主要有:
- 无人驾驶
- 人脸识别
- 无人安防
- 车辆车牌识别
- 智能识图
- 3D重构
- VR/AR
- 智能拍照
- 工业检测
- 医学图像处理
等等...🍉 🍓 🍑 🍈 🍌 🍐
🚀5.OpenCV的功能
应用OpenCV能够实现以下功能:
🍀(1)对图象数据的操作,包括分配、释放、复制和转换数据。
🍀(2)对图象和视频的输入输出,指文件和摄像头作为输入,图象和视频文件作为输出。
🍀(3)具有对距陈和向量的操作以及线性代数的算法程序,包括距阵、解方程、特征值以及奇异值。
🍀(4)可对各种动态数据结构,如列表、队列、集合、树和图等进行操作。
🍀(5)具有基本的数字图象处理能力,如可进行滤波、边缘检测、角点检测、采样与差值、色彩转换、形态操作、直方图和图象金字塔等操作。
🍀(6)可对各种结构进行分析,包括连接部件分析、轮廓处理、距离变换、各种距的计算、模板匹配、Hongh变换、多边形逼近、直线拟合、椭圆拟合和Delaunay三角划分等。
🍀(7)对摄像头的定标,包括发现与跟踪定标模式、定标、基本矩阵估计、齐次矩阵估计和立体对应。
🍀(8)对运动的分析,如对光流、运动分割和跟踪的分析。
🍀(9)对目标的识别,可采用特征法和隐马尔科夫模型(HMM)法。
🍀(10)具有基本的GUI功能,包括图像与视频显示、键盘和鼠标事件处理及滚动条等。
🍀(11)可对图像进行标注,如对线、二次曲线和多边形进行标注,还可以书写文字。
等等...🍉 🍓 🍑 🍈 🍌 🍐
🚀6.OpenCV的安装
在Python编译环境中,对于Linux和Windows操作系统,首先需要在cmd中运行以下命令安装Numpy。
pip install numpy
然后再安装OpenCV,可以选择两种不同的版本。
🍀(1)仅安装主模块包:
pip install opencv-python
🍀(2)安装完整包(包括主模块和附加模块):
pip install opencv-contrib-python
版权归原作者 小哥谈 所有, 如有侵权,请联系我们删除。