
OpenCV从入门到项目实战(基于C++)
文章平均质量分 97
原价99.9,限时29.9🔥火爆订阅中(五日后恢复原价)。OpenCV 是跨平台计算机视觉和机器学习库,实现了图像处理和计算机视觉方面的很多通用算法,已成为计算机视觉领域的主要开发工具。本专栏从实战出发,介绍包括人脸检测、物体追踪、3D重建等在内的多种计算机视觉项目。
优惠券已抵扣
余额抵扣
还需支付
¥29.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
盼小辉丶
记录学习历程,分享学习心得,关注深度学习,欢迎交流学习.
展开
-
OpenCV实战(1)——OpenCV与图像处理基础
OpenCV 是一个跨平台计算机视觉和机器学习库,实现了图像处理和计算机视觉方面的很多通用算法。本节将介绍 OpenCV 的基础知识,以及如何编译运行 OpenCV 程序,并介绍如何完成最基本的图像处理任务——读取、显示和保存图像。除此之外,鼠标事件和图形绘制也是 OpenCV 计算机视觉项目中常用的基本功能,本节介绍了如何使用这两个重要的 OpenCV 功能。原创 2022-10-24 07:30:00 · 82760 阅读 · 233 评论 -
OpenCV实战(2)——OpenCV核心数据结构
cv::Mat 类是用于保存图像(以及其他矩阵数据)的数据结构,该数据结构是所有 OpenCV 类和函数的核心,这是 OpenCV 库的一个关键元素,用于处理图像和矩阵(从计算和数学的角度来看,图像本质上是一个矩阵),同时 cv::Mat 数据结构结合了优雅的内存管理机制,因此,使用起来十分高效。本节中,我们介绍了 cv::Mat 结构的基本用法,并且深入探索了创建 cv::Mat 数据结构时的内存分配方式。原创 2022-11-16 07:30:00 · 62662 阅读 · 59 评论 -
OpenCV实战(3)——图像感兴趣区域
在图像处理领域,感兴趣区域 (region of interest, ROI) 可以简单理解为从图像中选择的一个图像区域,这个区域是图像分析算法所关注的重点。使用 ROI 限定需要进行进一步处理的目标区域,可以减少图像处理时间,并增加处理精度。本节介绍了两种定义 ROI 的方法,并介绍了掩码在图像处理中的作用及用法。原创 2022-11-23 07:30:00 · 27949 阅读 · 55 评论 -
OpenCV实战(5)——图像运算详解
图像处理技术是计算机视觉项目的核心,通常是计算机视觉项目中的关键工具,可以使用它们来完成各种计算机视觉任务。因此,如果要构建计算机视觉项目,就需要对图像处理有足够的了解。图像运算也是图像处理技术的一种,在本文中,我们介绍了如何对图像执行的常见算术运算,例如按位运算、加减法、形态变换等。原创 2023-01-06 07:47:31 · 19820 阅读 · 24 评论 -
OpenCV实战(4)——像素操作
为了构建计算机视觉应用程序,需要能够访问图像内容,并修改或创建得到新图像。本节将介绍如何操作图片元素(即像素),我们将介绍如何扫描图像并处理其每个像素,同时,为了高效的进行操作,还进一步介绍了如何使用指针 Ptr 和迭代器 iterator 进行扫描图像执行像素操作。原创 2022-12-05 13:51:24 · 27349 阅读 · 83 评论 -
OpenCV实战(6)——OpenCV策略设计模式
良好的计算机视觉程序始于良好的编程实践,构建无错误的应用程序只是一个开始。我们真正想要的是一个能够随着新需求的出现而轻松适应和发展的应用程序。本节将介绍如何充分利用一些面向对象的编程原则以构建高质量的软件程序,我们将学习一些重要的设计模式,帮助我们使用易于测试、维护和可重用的组件构建应用程序。原创 2023-01-09 07:30:00 · 19752 阅读 · 48 评论 -
OpenCV实战(7)——OpenCV色彩空间转换
为了更好的进行图像处理,我们有时会使用不同的色彩空间。色彩空间是一个抽象的数学模型概念,色彩是人的眼睛对于不同频率的光线的不同感受,为了更好的表示色彩,人们建立了多种色彩模型以一维、二维、三维等坐标系来描述不同色彩,这种坐标系所能定义的色彩范围即色彩空间。本节中,我们介绍了多种常见的色彩空间,使用 cv::cvtColor() 可以将一种色彩空间的输入图像转换为另一种色彩空间,并且通过皮肤检测应用展示了颜色信息在图像处理中的重要作用。原创 2023-01-23 07:30:00 · 20539 阅读 · 39 评论 -
OpenCV实战(8)——直方图详解
一张图像由若干像素组成,每个像素如果包含一个值(一个通道),则可以组成一张灰度图像;或者如果每个像素包含三个值(三个通道),则可以组成一张彩色图像。每个通道的取值范围为 0 到 255。本节介绍图像直方图的概念,学习如何计算直方图以及如何使用它来修改图像的外观。直方图还可用于表征图像的内容并检测图像中的特定对象或纹理。原创 2023-01-28 07:30:00 · 20719 阅读 · 60 评论 -
OpenCV实战(9)——基于反向投影直方图检测图像内容
直方图是图像内容的一个重要特征。如果查看显示特定纹理或特定对象的图像区域,则该区域的直方图可以看作是一个函数,该函数给出了给定像素属于特定纹理或对象的概率。在本节中,将介绍直方图反投影的概念,以及如何将其用于检测特定的图像内容。原创 2023-01-31 07:30:00 · 19560 阅读 · 36 评论 -
OpenCV实战(10)——积分图像详解
积分图像作为在图像 (Region of Interest, ROI) 中求和像素的有效方法,已经广泛用于多尺度滑动窗口计算等应用中。本节中,介绍了积分图像的基本概念,并且通过多种不同方法实现了积分图像的计算,最后还通过两个实际应用讲解了积分图像在图像处理中的重要用途。原创 2023-02-13 07:48:15 · 20194 阅读 · 35 评论 -
OpenCV实战(11)——形态学变换详解
形态学变换( Morphological transformations )通常是在二值图像上执行、基于图像形状的操作。本节,首先介绍了基本形态学算子,腐蚀与膨胀,并介绍了根据基本算子组合得到的开运算与闭运算,最后,利用形态学算子实现了经典的边缘/角点检测图像处理应用。原创 2023-02-16 07:30:00 · 19711 阅读 · 39 评论 -
OpenCV实战(12)——图像滤波详解
滤波是信号和图像处理中的基本任务之一,其旨在有选择地提取图像的某些特征,可以用于在给定应用程序的上下文中传达重要信息,例如,去除图像中的噪声、提取所需的视觉特征、图像重采样等。图像滤波起源于信号系统理论,本节将介绍一些与滤波相关的重要概念,并展示如何在图像处理应用程序中使用滤波器。原创 2023-03-05 07:30:00 · 13259 阅读 · 55 评论 -
OpenCV实战(13)——高通滤波器及其应用
在频域分析中,滤波器是一种放大图像某些频带同时减少其他频带的操作,低通滤波器 (low-pass filters) 是消除图像高频成分的滤波器,而高通滤波器 (high-pass filters) 消除图像的低频成分。在本节中,我们介绍高通滤波器,并利用高通滤波器执行边缘检测。原创 2023-03-08 07:30:00 · 12406 阅读 · 45 评论 -
OpenCV实战(14)——图像线条提取
轮廓检测指在图像中,忽略背景和目标内部的纹理以及噪声干扰的影响实现目标轮廓提取的过程。轮廓检测是目标检测、形状分析、目标识别和目标跟踪等技术的重要基础。本节,我们介绍了如何使用轮廓检测算子 Canny 检测目标轮廓,同时讲解了霍夫变换及其变体概率霍夫变换,可以用于检测任何能够用参数方程表达的形状。原创 2023-03-13 07:30:00 · 17773 阅读 · 51 评论 -
OpenCV实战(15)——轮廓检测详解
在计算机视觉领域,轮廓通常指图像中对象边界的一系列点。因此,轮廓通常描述了对象边界的关键信息,包含了有关对象形状的主要信息,该信息可用于形状分析与对象检测和识别。本节中,我们首先介绍如何提取图像中轮廓,然后讲解如何计算轮廓的形状描述符。原创 2023-03-22 07:30:00 · 12935 阅读 · 25 评论 -
OpenCV实战(16)——角点检测详解
在计算机视觉中,兴趣点 (interest points) 也称为关键点 (keypoints) 或特征点 (feature points),广泛用于解决对象识别、图像匹配、视觉跟踪、3D 重建等领域的问题。与其将图像作为一个整体进行评估,不如选择可以用于局部分析的点,以获得将该点应用于局部或全局的信息。只要在图像中检测到足够数量的关键点,并且这些点具有可以精确定位的独特且稳定的特征,就能够利用这些点进行图像分析。原创 2023-03-31 07:31:33 · 11745 阅读 · 12 评论 -
OpenCV实战(17)——FAST特征点检测
Harris 算子根据两个垂直方向上的强度变化率给出了角点(或更一般地说,兴趣点)的数学定义。但使用这种定义需要计算图像导数,计算代价较为高昂,特别是兴趣点检测通常只是更复杂算法的先决步骤。在本中,我们将学习另一个特征点检测算子 FAST (Features from Accelerated Segment Test)。其专门设计用于快速检测图像中的兴趣点;关键点检测仅基于几个像素的比较。原创 2023-04-05 07:38:20 · 11904 阅读 · 26 评论 -
OpenCV实战(18)——特征匹配
关键点可以用于执行局部图像分析,这些关键点需要足够独特,以便在具有相同对象的不同图像中能够检测到相同的点。基于关键点执行图像分析需要构建丰富的表示来唯一地描述这些关键点,本节将重点介绍如何从关键点中提取描述符,描述符通常是描述关键点及其邻域的二进制、整数或浮点数的一维或二维向量。关键点最常见的用途之一是图像匹配,例如,执行图像匹配用于关联同一场景中的两张不同图像或检测图像中的目标对象。在本节中,我们将学习基本的匹配算法。原创 2023-04-12 07:45:04 · 12439 阅读 · 27 评论 -
OpenCV实战(19)——特征描述符
特征描述符是用于特征匹配应用程序的强大工具,本节介绍了如何使用 SURF 和 SIFT 特征描述符匹配图像特征点,并介绍了三种不同方法改进匹配结果:交叉检查匹配、比率测试和距离阈值。原创 2023-04-17 07:47:11 · 11434 阅读 · 32 评论 -
OpenCV实战(20)——图像投影关系
射影 (Projective geometry) 几何也称投影几何,其使用数学术语描述和表征图像形成过程。在本节中,我们将介绍多视图图像中的一些基本投影关系,并解释如何将它们用于计算机视觉应用程序。我们将学习如何通过使用投影约束使匹配更加准确,以及如何使用两视图关系拼接多个图像。原创 2023-04-30 08:49:47 · 12079 阅读 · 28 评论 -
OpenCV实战(21)——基于随机样本一致匹配图像
在本节中,我们学习了如何利用两个视图之间的对极约束来更可靠地匹配图像特征,基于随机样本一致算法可以同时解决基本矩阵和匹配集的解决问题,并在最后介绍了如何改进计算结果。原创 2023-05-03 08:13:30 · 11769 阅读 · 21 评论 -
OpenCV实战(22)——单应性及其应用
在计算机视觉中,平面的单应性被定义为从一个平面到另一个平面的投影映射,在多视图计算中,单应性具有重要用途,本节介绍使用 cv::findHomography 函数进行单应性估计,并利用单应性执行图像匹配任务。原创 2023-05-06 07:41:58 · 11566 阅读 · 31 评论 -
OpenCV实战(23)——相机标定
我们已经了解了相机如何通过在 2D 传感器平面上投射光线来拍摄 3D 场景,生成的图像准确地表示了在捕获图像的瞬间从特定视点观察场景。然而,图像形成过程消除了与其所表示场景元素的深度有关的所有信息。为了恢复场景的 3D 结构和摄像机的 3D 姿态,我们需要对相机参数进行校准,在本节中,我们将介绍如何执行相机标定。原创 2023-05-14 08:02:38 · 14533 阅读 · 33 评论 -
OpenCV实战(24)——相机姿态估计
如果物体的 3D 结构是已知的,那么就可以预测物体如何投影到相机的传感器上,图像形成的过程由投影方程描述。当方程的大部分项已知时,就可以通过观察一些图像来推断其他元素 (2D 或 3D) 的值。相机姿态估计就是通过几个已知坐标的特征点,以及这些点在照片中的成像位置,求解出相机位于坐标系内的坐标与旋转角度。在本节中,我们将研究观察已知 3D 结构时的相机姿态估计问题。原创 2023-05-17 08:11:32 · 13196 阅读 · 17 评论 -
OpenCV实战(25)——3D场景重建
3D 重建是计算机视觉中一个重要的研究领域,在本节中,我们将学习如何使用不同视图中图像点之间的对应关系来推断 3D 信息,同时介绍一个新的数学实体用于校准相机的两个视图之间的关系,并将讨论三角测量的原理以便从 2D 图像重建 3D 点。原创 2023-05-31 07:45:59 · 13435 阅读 · 28 评论 -
OpenCV实战(26)——视频序列处理
视频信号包含丰富的视觉信息,视频由一系列图像组成,每一图像称为一帧 (frame),这些图像以固定的时间间隔(通过指定帧率,单位为秒/帧)拍摄并显示运动场景。随着计算机算力的提升,现在已经可以对视频序列执行复杂的视觉分析,处理速度已经接近甚至快于实际视频帧率 (frame rate)。本节将学习如何读取、处理和存储视频序列。原创 2023-06-07 07:47:01 · 13174 阅读 · 20 评论 -
OpenCV实战(27)——追踪视频中的特征点
视频特征点追踪,对于分析视频中不同重要元素的移动而言十分重要,其中一些特征点的运动可用于了解捕获场景的不同元素如何移动。在本节中,我们将学习如何在特征点逐帧移动时通过跟踪特征点来执行序列的时间分析。原创 2023-07-02 07:26:34 · 12879 阅读 · 41 评论 -
OpenCV实战(28)——光流估计
光流估计 (Optical Flow estimation) 在视频理解、动作识别、目标跟踪、全景拼接等领域具有重要应用,在各类视频分析任务中它反映了视频内部的运动信息,是一种重要视觉线索。本节中,将介绍了光流估计的基本原理,并使用 cv::DualTVL1OpticalFlow 类解决密集光流估计问题。原创 2023-07-09 22:58:20 · 10957 阅读 · 24 评论 -
OpenCV实战(29)——视频对象追踪
视频对象追踪是在视频中随着时间的推移定位移动对象的过程,在智能安防等领域有着重要用途,本节介绍一些在 OpenCV 库中实现的对象跟踪算法,并实现了一个通用的对象追踪框架。原创 2023-08-10 07:13:23 · 13550 阅读 · 77 评论 -
OpenCV实战(30)——OpenCV与机器学习的碰撞
随着人工智能的发展,许多机器学习算法开始用于解决机器视觉问题。机器学习是一个广泛的研究领域,包含许多重要的概念,本节我们将介绍一些主要的机器学习技术,并介绍如何使用 OpenCV 在计算机视觉系统中应用这些技术。原创 2023-08-31 07:53:07 · 15578 阅读 · 93 评论 -
OpenCV实战(31)——基于级联Haar特征的目标检测
对于大多数机器学习方法,训练是一个迭代过程,在此过程中通过循环遍历样本来构建机器学习模型。通过使用更多的样本,得到的分类器性能会逐渐提高。当模型性能达到预设值或者当无法从当前训练数据集中获得更多改进时,学习过程将停止。本节中,我们将介绍一种遵循以上过程的机器学习算法,即级联分类器。原创 2023-09-04 07:34:29 · 11789 阅读 · 75 评论 -
OpenCV实战(32)——使用SVM和定向梯度直方图执行目标检测
本节中,我们将介绍机器学习方法支持向量机 (Support Vector Machine, SVM),它可以根据训练数据得到准确的二分类分类器,它已被广泛用于解决许多计算机视觉问题。该分类器可以通过使用数学公式表达,该公式可以用于在高维空间中查看数据集的几何结构。此外,我们还将介绍一种新的图像表示,该表示通常与 SVM 结合使用以获取鲁棒性对象检测器。原创 2023-09-14 07:57:02 · 11602 阅读 · 96 评论 -
OpenCV实战(33)——OpenCV与深度学习的碰撞
在本文中,我们首先通过 cv2::dnn::blobFromImage() 和 cv2::dnn::blobFromImages() 函数了解了如何在 OpenCV 中构建网络输入 blob,然后通过实战学习将流行的深度学习模型架构应用于目标检测任务中,构建 OpenCV 计算机视觉项目。原创 2023-10-10 07:55:38 · 18915 阅读 · 86 评论 -
OpenCV实战——实现高效图像扫描循环
编写图像处理函数时,效率通常是一个需要考虑的问题。设计函数时,经常需要检查代码的计算效率,以检测处理中可能减慢程序速度的瓶颈操作。在本节中,介绍了如何测量函数或一部分代码的执行时间,并对比了不同像素扫描算法的执行效率。原创 2022-12-09 07:30:00 · 19455 阅读 · 35 评论 -
OpenCV实战——使用邻居访问扫描图像
在图像处理中,有时需要根据某个像素的相邻像素的值计算该像素位置的值。当这个邻域包括上一行和下一行的像素时,就需要同时扫描图像的多行像素,本节中,我们将介绍如何通过邻居访问扫描图像。原创 2023-01-02 07:30:00 · 18962 阅读 · 24 评论 -
OpenCV实战——基于GrabCut算法的图像分割
颜色信息可以用于将图像分割成与场景特定元素相对应的区域。每类对象通常具有独特的颜色,通常可以通过识别相似颜色的区域来提取。OpenCV 提供了一种流行的图像分割算法—— GrabCut 算法的实现。GrabCut 是一种复杂且计算量大的算法,但它通常会得到非常准确的结果。原创 2023-01-16 07:30:00 · 18997 阅读 · 21 评论 -
OpenCV实战——基于均值漂移算法检测图像内容
直方图反投影的结果是一个概率图,表示在特定图像位置找到给定图像内容的概率。假设我们现在知道一个物体在图像中的大概位置;概率图可用于找到对象的确切位置。目标对象最有可能的位置是在给定窗口内概率最大化的像素。因此,如果我们从初始位置开始并迭代移动,应该可以找到确切的对象位置,这就是均值漂移算法的核心思想。本节介绍了均值漂移算法的核心思想,并利用均值漂移算法检测图像中的内容。原创 2023-02-03 08:14:39 · 19098 阅读 · 44 评论 -
OpenCV实战——使用直方图比较相似图像
基于内容的图像检索是计算机视觉中的一个重要问题,用于查询与给定图像具有相似内容的图像。我们知道直方图是表征图像内容的一种有效方式,因此它们可用于解决基于内容的图像检索问题。使用直方图进行图像检索的关键是通过比较图像的直方图来衡量两个图像之间的相似性,本节中,介绍了如何使用直方图比较相似图像。原创 2023-02-09 07:30:00 · 19072 阅读 · 31 评论 -
OpenCV实战——基于分水岭算法的图像分割
分水岭变换是一种流行的图像处理算法,用于快速将图像分割成同质区域。分水岭变换主要基于以下思想:当图像被视为拓扑浮雕时,均质区域对应于相对平坦且由陡峭的边缘界定的盆地。算法的原始版本倾向于过度分割图像,从而产生多个小区域,因此 OpenCV 中实现了该算法的改进版本,通过使用一组预定义的标记来指导图像分割区域的定义。原创 2023-02-22 07:30:00 · 19506 阅读 · 37 评论 -
OpenCV实战——使用MSER提取特征区域
最大稳定极值区域 (maximally stable external regions, MSER) 算法同样使用注水过程类比提取图像中的特征区域,这些区域同样通过逐级淹没图像来创建,但我们将重点关注在浸入过程中保持相对稳定的盆地,这些区域对应于图像中目标对象的特征部分。在 OpenCV 中可以使用 cv::MSER 类计算图像 MSER,使用默认的空构造函数创建 cv::MSER 类的实例。原创 2023-02-27 07:30:00 · 19355 阅读 · 32 评论