目录
Imgproc 模块:图像处理模块,包括图像过滤、几何变换等功能。
Video 模块:视频处理模块,提供了视频捕获、光流估计等功能。
HighGUI 模块:图形用户界面模块,用于创建简单的GUI应用程序。
Objdetect 模块:对象检测模块,包括Haar级联检测器等功能。
Core 模块:核心模块,提供了基本的数据结构和功能。
常用的核心函数:
-
cv::Mat
:表示多维数组的数据结构,是OpenCV中最常用的类之一,用于存储图像数据和进行矩阵运算。 -
cv::Scalar
:用于表示多通道数据的标量,通常用于颜色表示。 -
cv::Size
:用于表示二维空间中的尺寸大小,常用于图像尺寸的表示。 -
cv::Point
和cv::Point2f
:用于表示二维空间中的点坐标。 -
cv::Rect
:用于表示二维平面上的矩形区域。 -
cv::Range
:用于表示一维数据的范围。 -
cv::Mat_< >
:模板类,用于创建特定类型的矩阵。 -
cv::split
和cv::merge
:用于通道分离和合并操作。 -
cv::cvtColor
:用于颜色空间转换,例如RGB到灰度、RGB到HSV等。 -
cv::resize
:用于图像缩放操作。 -
cv::flip
:用于图像翻转操作。 -
cv::transpose
:用于矩阵转置操作。
Imgproc 模块:图像处理模块,包括图像过滤、几何变换等功能。
-
图像滤波函数:
cv::GaussianBlur
:高斯模糊。cv::medianBlur
:中值滤波。cv::bilateralFilter
:双边滤波。
高斯模糊(Gaussian Blur)是图像处理中常用的一种平滑滤波方法,它利用了高斯函数的特性对图像进行模糊处理。在OpenCV中,cv::GaussianBlur
函数就是用来实现高斯模糊的。
高斯模糊的原理如下:
- 对图像中的每个像素,以该像素为中心取一个固定大小的邻域(通常是一个正方形或矩形区域)。
- 对这个邻域内的所有像素值按照高斯分布进行加权平均,即距离中心像素越远的像素权重越小。
- 最后将加权平均后的值赋给中心像素,从而实现模糊效果。
高斯模糊的主要思想是利用高斯函数对像素值进行加权平均,使得图像中的噪声被平滑掉,同时保留图像的整体结构和边缘信息,避免产生锐化等不良效果。
高斯模糊的核(Kernel)由一个二维的高斯函数构成,通常是一个正态分布曲线。核的大小(即邻域的大小)以及标准差(控制高斯函数的宽度)可以影响模糊的程度,一般情况下,标准差越大,模糊效果越明显。
双边滤波的原理如下:
- 对图像中的每个像素,以该像素为中心取一个固定大小的邻域。
- 对这个邻域内的所有像素值进行加权平均,权重由两部分组成:
- 空间上的权重:根据像素之间的空间距离计算得出,距离越近的像素权重越大。
- 强度上的权重:根据像素值之间的差异计算得出,差异越小的像素权重越大。
- 最后将加权平均后的值赋给中心像素,从而实现平滑效果。
双边滤波相比于传统的高斯模糊具有更好的性能,因为它考虑了像素之间的空间关系和强度差异,能够保留图像中的边缘信